Power Automate Desktop実行完了時に実行結果・実行時間をメールを送信する方法について解説します。
PADで定期実行している場合や、時間のかかるフローを実行している場合、フロー実行が完了したらメール通知でお知らせできるようになると便利ですし、先日公表された「Picture-in-Picture」で実行してて、終わったらメール通知が来るようになれば作業効率も上がりそうです。
【前提】メール送信はOutlookで行う
本記事で紹介するメール送信方法は、Outlookでメール送信をする方法になります。
フロー全体
まず、フロー全体は以下のようになります。以下のフローではファイルの移動を行い、それが成功したかどうか、実行にかかった時間についてメール通知するようにしています。
VBScriptの実行
まず、実行時間を計測するために「VBScriptの実行」アクションを追加します。
1行目の「VBScriptの実行」には、以下コードを入力してください。
Dim startTime, endTime, executionTime
' 開始時間を記録
startTime = Timer ' 現在の時間を開始時間として記録
WScript.StdOut.Write(startTime)
6行目の「VBScriptの実行」には、以下コードを入力してください。
' 終了時間を記録
endTime = Timer ' 現在の時間を終了時間として記録
' 実行時間を計算
executionTime = endTime - %VBScriptOutput%
' 分と秒に分解
minutes = Int(executionTime / 60)
seconds = Int(executionTime Mod 60)
' 実行時間を〇分〇秒の形式に整形
executionTimeFormatted = minutes & "分" & seconds & "秒"
' 実行時間を格納
WScript.StdOut.Write(executionTimeFormatted)
なお、VBScriptの実行に関しては、以下記事にて詳しく解説しています。
ラベルの作成
フローの途中でエラーが発生したときの遷移先を「ラベル」で設定します。
変数の設定
5行目までフローが進んでいるということは、ブロック(紫で囲まれた中の処理)でエラーが発生せず処理されたことが分かります。そこで、「変数の設定」にて値に「成功」を割り当てます。
※失敗時は、別の場所で「失敗」を割り当てます(後述します)。
ブロックエラー発生時の設定
2行目・4行目にて、ブロックエラー発生時の設定をしています。
ブロック内でエラーが発生したときに、どのような対応を取るか設定しています。今回であれば、ブロック内の処理に失敗したら、ステータスを「失敗」にしてメールを送信したいので、以下のように設定します。
- 変数 MailMsg に「失敗」を設定
- 「フロー実行を続行する」を選択
- 例外処理モードを「ラベルに移動」、ラベルの選択は「メール送信」に設定
Outlookの起動
7行目で、Outlookを起動します。
Outlookでメールの送信
9行目で、メール送信を行います。
「アカウント」にはメール送信に使用するアカウント、「宛先」にはメール送信先のメールアドレスを入力してください。
本文には、
PAD実行完了通知
実行結果:%MailMsg%
実行時間:%VBScriptOutput2%
と入力します。
実行結果
フロー成功時
フロー失敗時
本フローはファイルを移動させるだけなので、実行時間が1秒となっていますが、Webページのスクレイピング処理や、データ量の多いExcelの処理などは時間がかかるものもあると思います。
実行時間を測定することで、大体どのくらいのデータ量でどのくらい時間がかかっているかを把握することができ、フローのリファクタリング時の効果測定などにも使えると思います。
まとめ
今回は、Power Automate Desktop実行完了時に実行結果・実行時間をメールを送信する方法について解説しました。
基本的に、掲載したフロー全体のうち3行目(ブロックエラー~Endのあいだ)にアクションを追加することで、実行結果と実行時間をメールで通知できるようになりますので、ぜひ参考にしてみてください。
当ブログでは、Power Automate、Power Automate Desktopに関する記事を他にも投稿しています。もし、「このようなことが知りたい」「こんなフローの作り方が知りたい」等ございましたら、問い合わせやコメントからお気軽にご連絡ください。
コメント