Power Automateで勉強会レポート提出状況を自動チェック

恒例?の「Power Automate Desktop」のフローデザインの続きです。

あかしあでは毎月の勉強会は、ホームページのヘルパー専用ページにアップした研修動画を視聴してもらい、同じページに設置したオンラインフォームからレポート提出してもらっています。

オンラインフォームには、プラグインの「Contact Form 7」を使っています。
「Contact Form 7」は、もともとお問い合わせフォームなのですが、様々な機能が付いているのでアンケートやミニテストなどにもバッチリ使えます。
ヘルパーさんが自身のメールアドレスを入れてもらえれば、オンラインフォーム送信直後に自動で確認メールが返信されるようにしています。
ミニテストとかは、正解を、自動で直ぐに返すこともできます。

さて、このオンラインフォームから送信されたレポートは、ホームページの管理用メールアドレスに届きます。

今までは届いたレポートをプリントしてファイル、目視で提出確認をしていました。
しかしながら、確認もれもよくあり、ヘルパーさんからは、「送ったのに催促の連絡が来た」と言われることもしばしばでした。

そこで、「Power Automate Desktop」の登場です。

とにかく、目視でのチェックは、抜けや漏れが頻出します。
転記作業や確認作業、定型業務こそ、「Power Automate Desktop」で自動化の出番です。

今回は、これまでのようなUI要素に変数を組み込んで動的に動かす、とかは無いのですが、その代わりに変数の嵐でした。

まずはメールのアカウントから、メールのタイトルや送信者(ヘルパー氏名)、送信日時、本文(レポート)などのメールメッセージを取得します。
その際、メール側の設定で、IMAPをオンにしておきます。
これは、「Power Automate Desktop」がメーラーにアクセスできるよう許可するものです。
また、セキュリティー上、2段階認証をオンにして、アプリパスワードを取得しておく必要があるようです。

ここまでできれば、指定したメール、例えば、ここでは○月のレポートなどが全てリスト変数に収納されます。

続いて、取得したメールから、ヘルパー氏名と送信日時のみをループを使って順に取得してゆきます。
ループの前に前回同様、新しいデータテーブルを作成し、一行目を削除しておきます。
ループの回数は、取得したメールの数になるので、「.Count」プロパティでメールの数を変数に入れておきます。
なので、ループは1から上記の変数までをループ処理させます。

ちなみに、最初に取得したメールメッセージは、インデックス番号0から開始されていますので、このインデックス番号(ここでは変数tub)もループ内に組み込んでおきます。

取得したメールメッセージの構成にもよりますが、ここでは「.BodyText」プロパティをトリミングしたりしてヘルパーの名前を取得します。
同じく、送信日時も「.Date」プロパティで取得します。
それらを順にデータテーブルに入れていきます。

ループの回数はメールの数と一緒なので、全てのヘルパー氏名と送信日時が取得できればループを抜け、収納されたデータをエクセルに書き込みます。
書き込むエクセルには、あらかじめ、IF関数やCOUNTIF関数でヘルパー名簿を作っておきます。
「Power Automate Desktop」から書き出したデータとヘルパー名簿を関数で自動チェックすれば、レポート提出されたか否かが目視に頼らないで確認できます。

正確で業務効率もアップします。
「Power Automate Desktop」を使って定型業務を自動化すれば、1台のパソコンで自動作業をさせている間、別の仕事ができますので、生産性爆上がりです。

今回は、UI要素は一切使わないフローでしたが、特定のメールが一括で取得できて、メール内の情報も個別に取得できることがわかり、本当に勉強になりました。
これはこれで、とても便利です。