【Power Automate Desktop】自動メール送信フォルダー|OutlookとExcelの事例

PAD

「Power Automate Desktop」をつかった自動化の事例をご紹介します。

こちらでご紹介する内容は、メール自動送信ボックスの作成方法です。特定のフォルダーに入れた「ファイル名」を基にして、指定したメールの宛先に添付ファイルを送信するフローです。

今回のフローの構成はこちらです。

  1. 20秒おきにフローを実行する設定
  2. フォルダー「Before_SendMail」のファイルを検知
  3. ファイル名を解析してメール送信の判定
  4. 条件に該当するファイルを添付ファイルとしてメール送信
  5. フォルダー「After_SendMail」に該当ファイルを移動

まずはフロー全体をご覧ください。

実行結果はこちらです。

メール宛先ごとに該当するファイルを添付しています。
また、送信済の添付ファイルは別のフォルダーに移動しています。

スポンサーリンク

事前準備|使用ファイルの確認

Excelファイル「メール送信一覧」にメール送信にもちいる基本情報を掲載しています。

フォルダ「Before_SendMail」に添付ファイルを保存しています。

20秒おきにフローを実行する設定

まずは「繰り返し処理」をもちいてフローの継続実行の設定をします。

ループ条件

アクション「ループ条件」をつかって20秒おきにフローを実行する設定をします。

具体的には、「最初のオペランド」と「2番目のオペランド」におなじ数値をいれて演算子を「と等しい(=)」にします。このようにすることによって、「最初のオペランド」に入力された数値と「2番目のオペランド」に入れられた数値が等しい状態となっているため、常にループ処理が実行され続けることになります。

ちなみに、このような状態を「無限ループ」と呼びます。

Wait

あとは、ループ条件のフローのなかに「Wait」を設定することによって、20秒おきにフローが実行されることになります。

今回はテストのため「20秒おき」の設定にしていますが、実際には10分おきくらいの間隔でも良いと思います。

フォルダー「Before_SendMail」のファイルを検知

まずは、メール送信の起点となるフォルダーの情報を取得します。
そして、特定フォルダにファイルがあればメール送信の対象であるかどうかの判定をします。

フォルダー内のファイルを取得

まずはフォルダー「Before_SendMail」のファイル一覧を取得します。

アクション「フォルダー内のファイルを取得」をつかってフォルダー「Before_SendMail」を指定します。

対象フォルダー「Before_SendMail」のファイル名が取得されていることが確認できます。

If

まずはアクション「If」をつかって、条件分岐の処理を設定します。

フォルダー「Before_SendMail」に含まれているファイルの数が「0より大きい場合」に次のフローの処理を実行します。

「最初のオペランド」に「%count(Files)%」と入力することによって、変数「Files」に含まれている「ファイルの数」を取得することができます。

今回の例の場合、変数「Files」にはフォルダー「Before_SendMail」のファイルが5つ入っていますので、「5」が取得されます。

このような設定によって、フォルダー「Before_SendMail」にファイルが含まれている場合は、「処理を継続する」といったフローが完成します。この「処理を継続する」部分に「メール送信」のフローを追加していきます。

ちなみに、フォルダー「Before_SendMail」にファイルが含まれていない場合は、「メール送信」のフローが実行されません。

ファイル名を解析してメール送信の判定

こちらでは、メール送信の対象となるファイルの確認をします。

Outlook を起動します

まずは、Outlookを起動します。

Excel の起動

つぎにExcelを起動します。

起動するExcelファイルはこちらです。

Excel ワークシートから最初の空の列や行を取得

アクション「Excel ワークシートから最初の空の列や行を取得」をつかって行列の情報を取得します。
参考:【Power Automate Desktop】OutlookとExcelの連携でできることを解説

Loop

「Loop」をつかってExcelファイルの最下行に対応させる形で繰り返し処理の設定をします。

この「Loop」を設定することによって、赤枠内のフローを繰り返し処理の対象としています。

Excelファイル「メール送信一覧」の行数に応じた繰り返しを行います。
具体的には、開始値「2」から終了「4」までの「3回分の繰り返し処理」が実行されます。

Excel ワークシートから読み取り

Excelファイルの「1列目」にある「番号(抽出条件)」を取得します。

「Loop」による繰り返し処理のなかでのフローのため、Excelファイルの「1列目」にある情報のすべてを取得することになります。

具体的には、こちらの項目をうえから順番に読み取ります。

番号(抽出条件)
1
2
3

For each

「For each」をつかって繰り返し処理の設定をします。

設定の対象となるものは変数「Files」に含まれているこちらの一覧です。
全部で5つのファイルが入っているため、「5回分の繰返し処理」が実行されます。

ファイル パス部分の取得

「ファイル パス部分の取得」をつかってファイル名の取得をします。

取得対象となる変数「CurrentItem」には、変数「Files」から順番にひとつずつ取得された値が代入されています。

例えば、繰返し処理の1回目では変数「CurrentItem」には「(省略)1_Aさん_サンプルテキストA.txt」が代入されています。

以下、繰り返し処理の回数に応じた値の状況です。

繰返処理
の回数
代入される値取得される値
1(省略)Before_SendMail\1_Aさん_サンプルテキストA.txt1_Aさん_サンプルテキストA.txt
2(省略)Before_SendMail\1_Aさん_サンプルテキストB.txt1_Aさん_サンプルテキストB.txt
3(省略)Before_SendMail\2_Bさん_サンプルテキストD.txt2_Bさん_サンプルテキストD.txt
4(省略)Before_SendMail\3_Cさん_サンプルテキストC.txt3_Cさん_サンプルテキストC.txt
5(省略)Before_SendMail\4_未設定_サンプルテキストE.txt4_未設定_サンプルテキストE.txt

サブテキストの取得

「サブテキストの取得」をつかって、変数「FileName」の頭文字を取得します。

取得した頭文字を変数「FileName_Initial」に代入します。

ファイル名と取得される値の関係はつぎの通りです。

ファイル名取得される値
1_Aさん_サンプルテキストA.txt1
1_Aさん_サンプルテキストB.txt1
2_Bさん_サンプルテキストD.txt2
3_Cさん_サンプルテキストC.txt3
4_未設定_サンプルテキストE.txt4

If

さきほど取得した変数「FileName_Initial」とExcelファイル「メール送信一覧」の「1列目」を比較して条件分岐をおこないます。

2重ループのなかでの条件分岐のため、次のような比較がおこなわれます。
次工程で「メール送信」となっている分が次のフローに進みます。

【1回目の繰返】
For each
【2回目の繰返】
Loop
条件分岐次工程
11TRUEメール送信
11TRUEメール送信
21FALSEなし
31FALSEなし
41FALSEなし
12FALSEなし
12FALSEなし
22TRUEメール送信
32FALSEなし
42FALSEなし
13FALSEなし
13FALSEなし
23FALSEなし
33TRUEメール送信
43FALSEなし

比較対象となる2つの要素はこちらです。

条件に該当するファイルを添付ファイルとしてメール送信

ここからは条件に合うファイルの「メール送信」の設定をします。

Excel ワークシートから読み取り

Excelファイル「メール送信一覧」の「3列目」からメールアドレスを読み取ります。

Outlook からのメール メッセージの送信

Outlookにそれぞれの変数を代入します。

フォルダー「After_SendMail」に該当ファイルを移動

ファイルの移動

メール送信が完了したファイルを別のフォルダー「After_SendMail」に移動させます。

Excel を閉じる

さいごにExcelファイルを閉じます。

まとめ

「無限ループ」をつかった自動メール送信の自動化についてのご紹介をしました。

「Power Automate Desktop」をつかえば少し複雑な内容であってもプログラミングをすることなく自動化のフローを作成することができます。

こちらでご紹介した例を参考にしていただき、色々とカスタマイズしてご活用ください。

今回の事例のように長いフローのものを作成する場合は、「変数」に代入されている内容をいちいち覚えておくのが難しくなってくるかと思います。

そういった場合は、作成中のフローの要所要所に「メッセージボックス」を設定しておいて「変数」の内容を確認しながら作成することをオススメします。

タイトルとURLをコピーしました