Power AutomateでExcelシートのリストからメールを送信する Part2

前回の自動メール送受信管理簿のつづきです。前回をご覧になっていないかたには、ちんぷんかんぷんなので↓こちら↓からどうぞ。

概要

自動メール送受信管理簿の機能で、現状では期限を過ぎると当事者からの返信メールを受信するまで延々と督促メールを送る仕様です。これを一度督促メールを送ったら、次からは送らないように変更します。そのためのフラグを管理するのがdemand列です。

うごきとしては督促メールを送ったらdemandにフラグを立てて、督促メールを送信する前にフラグが立っていないかを確認する、もしくはフラグ付きのNGは対象者として引っ張ってこないようにすればよいですね。今回は前者でいきます。

フラグありなしを判定して、その結果により処理を変えるにはPower Automateでは条件コントロールを使います。VBAでいうところのIfに相当します。そのまんまですね。

フロー順序の変更(仮)

はい、ここでひとつ問題があります。

前回までのフローではすでにメール送信アクションを設定しました。

今回の要件を満足するにはメール送信前にフラグ判定をする必要がありますよね。つまりすでに設定したメール送信アクションの前に条件コントロールを入れなければなりません。

これを書いている時点のPower Automateでは、ステップやアクションの順番を入れ替えることはできませんでした。いずれできるようになりそうですが、今回はクリップボードにコピー機能を使います。

メール送信アクションの[・・・]をクリックするとメニューが展開してクリップボードにコピー(プレビュー)がありますのでクリックします。

(プレビュー)が若干気になりますが結果からいうと、ややあやしい挙動がありましたが、問題なく使えます。

これでクリップボードにコピーできているはずなので、後ほど使うとしてメール送信アクションはいったん消します。同じく[・・・]のメニューから削除をクリックすると消えます。

フローの条件分岐

あらためてアクションの追加をクリックしてコントロールから条件を選択します。

条件のパラメーター設定画面になります。条件Trueの場合、Falseの場合を設定していきます。VBAなどのプログラムの条件分岐と比べて一目でそれとわかりますよね。

条件はdemandが○か否かなのでこうします。

条件がTrue(はいの場合)では何もする必要がないので、そのままにしておきます。

False側(いいえの場合)にメール送信アクションを追加します。ここで先ほどのクリップボードの出番です。

アクションの追加をクリックして一番右にある自分のクリップボードタブに切り替えます。するとメール送信アクションが表示されるのでクリックします。

ここで私の場合、エラーメッセージが出て失敗しました。いったん別のタブに切り替えたり、空のメール送信アクションを1回追加して消したりしたあとリトライしたらいけました。

クリップボードから追加したアクションは、コピーしたときに設定されていたパラメーターがすでに入った状態になっています。

送信済みフラグフロー

ここまでで督促メールの送信が完了したので、つづけて送信済みフラグを立てます。

メール送信アクションの下へアクションの追加をクリックしてExcel Online(OneDrive)から行の更新アクションを選択します。

パラメーターはmailで検索して該当した行のdemandに○をするので、次のようになります。

これでフローは完成です。最後にそれぞれのステップの名前をわかりやすく変えておきます。

ちょっと小さくて見づらいですがフローの全体像は次のようになっています。

フローのテスト

では、ちゃんとうごくのかテストしてみます。

テーブルは次の状態でテスト機能で強制的にフローをトリガーします。アドレスは一部本物にしているのでモザイクです。

数秒後、督促メールが来ました。

もちろん、もう一人のNGの方にもメールが来ています。テーブルを確認してみると

demandにフラグが立っていますね。

このときのテストの実行結果を見てみると、これまた小さくて見づらいですが条件分岐でfalseになってメール送信、フラグ立てまで実行されているのがわかります。

もう一度フローをトリガーしてみます。今度は送信済みフラグが立っているのでNGでもメールは送信されないはずです。

実行結果を確認すると

条件がtrueでそれ以降何も実行されていませんね。成功です。もちろんメールも届いていません。

まとめ

Power AutomateはVBAで実装するには手間がかかりすぎる他のアプリやWEBサービスとの連携が簡単にできます。

今回はメールを扱いましたが、当然SharePointやTeamsとも連携できます。有料プランになりますが、HTTPリクエストを送信することもできるようです。これができたらもう何でもできると思っていいですよね。

逆にVBAの方が簡単に実装できる処理もあります。特にファイル内だけで完結するような処理はPower Automateには向いていません。

なので、現時点ではまだ「両方使えれば最強」という状態です。ですが、いずれVBAはPower Automateに喰われるのは間違いないので、これからのVBAerはPower Automateもこなせるようになっておきましょう。

そのうち有料プランも試してみたいです。

おわり。