「Power Automate Desktop」をつかった自動化の事例をご紹介します。
こちらでご紹介する内容は、メール自動送信ボックスの作成方法です。特定のフォルダーに入れた「ファイル名」を基にして、指定したメールの宛先に添付ファイルを送信するフローです。
今回のフローの構成はこちらです。
- 20秒おきにフローを実行する設定
- フォルダー「Before_SendMail」のファイルを検知
- ファイル名を解析してメール送信の判定
- 条件に該当するファイルを添付ファイルとしてメール送信
- フォルダー「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.txt | 1_Aさん_サンプルテキストA.txt |
2 | (省略)Before_SendMail\1_Aさん_サンプルテキストB.txt | 1_Aさん_サンプルテキストB.txt |
3 | (省略)Before_SendMail\2_Bさん_サンプルテキストD.txt | 2_Bさん_サンプルテキストD.txt |
4 | (省略)Before_SendMail\3_Cさん_サンプルテキストC.txt | 3_Cさん_サンプルテキストC.txt |
5 | (省略)Before_SendMail\4_未設定_サンプルテキストE.txt | 4_未設定_サンプルテキストE.txt |
サブテキストの取得
「サブテキストの取得」をつかって、変数「FileName」の頭文字を取得します。
取得した頭文字を変数「FileName_Initial」に代入します。
ファイル名と取得される値の関係はつぎの通りです。
ファイル名 | 取得される値 |
1_Aさん_サンプルテキストA.txt | 1 |
1_Aさん_サンプルテキストB.txt | 1 |
2_Bさん_サンプルテキストD.txt | 2 |
3_Cさん_サンプルテキストC.txt | 3 |
4_未設定_サンプルテキストE.txt | 4 |
If
さきほど取得した変数「FileName_Initial」とExcelファイル「メール送信一覧」の「1列目」を比較して条件分岐をおこないます。
2重ループのなかでの条件分岐のため、次のような比較がおこなわれます。
次工程で「メール送信」となっている分が次のフローに進みます。
【1回目の繰返】 For each | 【2回目の繰返】 Loop | 条件分岐 | 次工程 |
1 | 1 | TRUE | メール送信 |
1 | 1 | TRUE | メール送信 |
2 | 1 | FALSE | なし |
3 | 1 | FALSE | なし |
4 | 1 | FALSE | なし |
1 | 2 | FALSE | なし |
1 | 2 | FALSE | なし |
2 | 2 | TRUE | メール送信 |
3 | 2 | FALSE | なし |
4 | 2 | FALSE | なし |
1 | 3 | FALSE | なし |
1 | 3 | FALSE | なし |
2 | 3 | FALSE | なし |
3 | 3 | TRUE | メール送信 |
4 | 3 | FALSE | なし |
比較対象となる2つの要素はこちらです。
条件に該当するファイルを添付ファイルとしてメール送信
ここからは条件に合うファイルの「メール送信」の設定をします。
Excel ワークシートから読み取り
Excelファイル「メール送信一覧」の「3列目」からメールアドレスを読み取ります。
Outlook からのメール メッセージの送信
Outlookにそれぞれの変数を代入します。
フォルダー「After_SendMail」に該当ファイルを移動
ファイルの移動
メール送信が完了したファイルを別のフォルダー「After_SendMail」に移動させます。
Excel を閉じる
さいごにExcelファイルを閉じます。
まとめ
「無限ループ」をつかった自動メール送信の自動化についてのご紹介をしました。
「Power Automate Desktop」をつかえば少し複雑な内容であってもプログラミングをすることなく自動化のフローを作成することができます。
こちらでご紹介した例を参考にしていただき、色々とカスタマイズしてご活用ください。
今回の事例のように長いフローのものを作成する場合は、「変数」に代入されている内容をいちいち覚えておくのが難しくなってくるかと思います。
そういった場合は、作成中のフローの要所要所に「メッセージボックス」を設定しておいて「変数」の内容を確認しながら作成することをオススメします。
こちらに「Power Automate Desktop」でできることや基本的な操作方法をまとめていますので、もしご興味がございましたら一度ご覧ください。