Power Automateで、Excelの一覧をつかって一斉メールを送りたい

メール送信リストに対して一斉送信をしたいというシチュエーションはよくあるでしょう。今回は条件なしに、表に記載されている宛先への一斉メール送信をしてみます。
Excel Onlineに送信先の一覧を作る
まずSPO上に送信したいメールアドレスを書いたデータを用意しました。データはテーブル化して、テーブルに名前をつけましょう。

表ができたら右上の「テーブルとして書式設定をクリック。適当なスタイルを選びます。

先頭行に見出しをつけてあるので、チェックを入れた状態で[OK]をクリック。

テーブルにカーソルを置くと、メニューに「テーブルデザイン」という項目が出るのでクリック。左上に適当なテーブル名を指定しておきます。今回は「sampleテーブル」にしました。
Excel Onlineコネクターを使う

Power Automateに移って、Excel Onlineから[表内に存在する行を一覧表示]をクリックします。

先ほど作った表が入っているExcelの場所を指定します。テーブルには先ほど名前をつけたテーブル名が出てくるはずです。
※例ではスケジュール済みクラウドフローを使っていますが、今回の例の場合は何回もメールを送り付けてしまうので、インスタントクラウドフローから始めるほうが良いですね。
テストしてみる

ここまで出来たら、一度保存して「テスト」を実行してみましょう。正常に実行できました。

理解を深めるために、このExcelコネクターが何を出力したのか見てみましょう。[クリックしてダウンロードします]をクリックします。

なにやらどっさり文字が出てきました。これがJSONです。注目するのは最後のところ。value:のカッコ[]の中にメール:と名前:があります。それぞれの後ろには具体的なメールアドレスと、名前が書いてあります。
Apply to eachを使う
では、編集に戻って、新しいステップとして[組み込み]-[コントロール]-[Apply to each]を選びます。
「以前の手順から出力を選択」の欄を選択して、⚡稲妻マークをクリックすると、「表ないに存在する行を一覧」の「value アイテムの一覧」が候補として出てきますので選択します。(画面が違うよ、という方は試験的な機能を使っていないためです。こちらを参考に設定することをお勧めします。)

アクションの追加をクリックします。

ちなみに、「Apply to each」というのは、ぐるぐる回して中身を取り出すというイメージを持っておくとよいでしょう。
Outlook 365コネクターを使う
Outlook365の「メールの送信(V2)」を選択します。「サインイン」を求められた場合は、認証を行ってください。

宛先欄をクリックして、⚡稲妻マークをクリックすると、候補として「表内に存在する行を一覧表示」の中に[メール]が表示されていますので、クリックします。

同様に、本文の中に宛先の名前を追加しましょう。

これで完成です。Excelに作成したテーブルのメールアドレスに送信しますので、まずは自分宛に送信テストを行うことをお勧めします。
テストを実行したあと、各フローの右上角が緑色のチェックマークになっていれば成功です。「Apply to each」の中を開いてみると、どのような値で送信ができたかがチェックできます。

テストが成功したら、本文を修正して送信すると良いでしょう。
送信制限を意識して待機時間を設定してみる
Office 365のメール送信には、送信数に関する制限がありますのでチェックしておきます。
1分あたり30個のメッセージという制限があります。フローは一瞬で動作するので、30件以上の宛先への送信ではそれを超えてしまう恐れがあります。念のためメールを1件送信するたびに2秒待って送信するようにしてみましょう。
編集に戻ってメール送信の下にある[アクションの追加]をクリックします。

[組み込み]-[スケジュール]-[遅延]を選択します。

待ち時間を2秒に設定してみました。

Excelのリストからメール送信というシチュエーションはよく使うかと思います。メールの部分をTeamsのメッセージ送信に変更すれば、簡単にチャットを送信させることができます。
これで安心です。
一歩踏み込んで中身を見てみよう
宛先に追加した「メール」の部分にマウスポインターを置いてしばらく待ってみると、内部で使われている式を覗いてみることができます。itemsという関数でAplly_to_eachのなかの「メール」という値をとって来ていることがわかります。

同じように「Apply to each」の「value」にもマウスを重ねてみましょう。こちらは、前項目のExcelコネクターの出力から、「body/value」をとってきていることがわかります。


もういちど例の出力を見てみると理解が深まります。「value」の中に「メール」がありました。ここを引っ張ってきているんですね。
他にもちょっとしたPower Automateの小技を集めて書き溜めていますのでこちらからご覧ください。
ディスカッション
コメント一覧
まだ、コメントがありません