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

Power Automateで条件によって処理を変える方法。

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

概要

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

pam_mail_sent11.png

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

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

フロー順序の変更(仮)

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

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

pam_mail_sent20.png

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

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

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

pam-mail-sent21.png

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

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

フローの条件分岐

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

pam-mail-sent22.png

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

pam-mail-sent23.png

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

pam-mail-sent24.png

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

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

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

pam-mail-sent25.png

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

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

pam-mail-sent26.png

送信済みフラグフロー

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

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

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

pam-mail-sent27.png

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

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

pam-mail-sent28.png

フローのテスト

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

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

pam-mail-sent30.png

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

pam-mail-sent29.png

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

pam-mail-sent31.png

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

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

pam-mail-sent32.png

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

実行結果を確認すると

pam-mail-sent33.png

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

まとめ

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

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

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

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

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

おわり。

related pages
VBAからLINEにメッセージを送る
LINE Notify APIにVBAからリクエストする方法。

LINE Notifyというサービスがあります。API経由でLINEにメッセージが送れます。これをVBAから利用できればいろいろ面白いことができそうですよね。たとえば、Excelファイルのイニシャライズイベントに仕込んでおけば、ファイルが開かれたらLINEにメッセージが届きます。発想次第で画期的な何かが生まれそうな予感がします。

Read More ...
僕の考えた最強のExcel-VBA学習法
若干、いや、かなり偏ってます。

Excelはその圧倒的シェアによりデファクトスタンダードの地位を揺るぎないものにしています。このような状況を鑑みると、どのような業界、業種であろうとも会社がカネをかけて自社内にVBA使いを養成すべきと思っていますが、そのようなところは極めて少数派でしょう。よって自己投資による学習を要します。

Read More ...
Excelでの作業を加速するマウス
PCに付属してきたマウスは窓から投げ捨てろ!

メーカー製やBTOのPCであれば、付属してきたマウスをそのままお使いの方が多いのではないでしょうか。それで何も問題がないのでわざわざ別のマウスに変えようとも思わないでしょう。実は人間とコンピューターをつなぐインターフェイスであるマウスやキーボードはPC作業の効率に大きく関与する要素なのです。

Read More ...
この記事の
作成日

2020-12-29

更新日

2021-05-07

ページ内検索
目次
WEB MASTER
さいた
神エクセル撲滅協会理事(自称)
さいたま市民 埼玉こそ地上の楽園