Power Automate DesktopとSendGridを使ってExcelの宛先リストに一斉送信する方法

SendGridサポートエンジニアの菊田(@kikutaro_)です。最近、自動化ツール(RPA:Robotic Process Automation)を調べていて、中でも今年3月にMicrosoftが無償化した「Power Automate Desktop」に注目しています。様々な自動化ツールがある中、Webサービスだけではなく、デスクトップのアプリケーションを含めて自動化できるのが魅力です。

今回のブログではPower Automate Desktopの長所を活かして、Excelから読み込んだ宛先に対してSendGridで一斉送信する流れを自動化してみました。具体的な設定手順をご紹介します。

自動化のイメージ

処理フローは以下のとおりです。Excelの宛先リストからメールアドレスと名前を取り出して、SendGridの送信リクエスト形式に加工してメールを送ります。

自動化のイメージ

Excelの宛先リスト

メールアドレスと名前が入った宛先リストを用意します。今回は下図のように3件の宛先を含んだExcelファイルを用意しました。

宛先リスト

Power Automate Desktopの設定

フローを作成する

Power Automate Desktopで「新しいフロー」を作成すると最初に以下の画面が表示されます。フロー名は自由に決めてください。ここでは「ExcelToSendGrid」と名づけました。

「新しいフロー」を作成

Excelデータの読み込み

最初のフローではExcelファイルからデータを読み込みます。まずは画面左のアクションメニュー「Excel」->「詳細」->「Excelの起動」を選びます。


「Excelの起動」を選択

画面上の「次のドキュメントを開く」を選んだ後、最初に用意したExcelの宛先リストを指定します。

宛先リストを指定

続いて「Excelワークシートから読み取り」のメニューを選びます。

「Excelワークシートから読み取り」を選択

「セル範囲の値」を選んで以下の範囲を指定します。

「セル範囲の値」を選択

冒頭で紹介したExcelは1行目が「email」「name」というヘッダで、読み込む必要はないため先頭行は「2」にします。今回用意したExcelのデータは4行目までなので最終行は「4」にします。冒頭のExcelと異なるデータを使うときは、そのファイルに合わせてそれぞれの値を変更してください。

値の指定について

データの加工

Excelデータの読み込み設定が終わったので、次はデータ加工の設定をします。具体的にはメールアドレスと名前を以下のような形式にします。最終行だけカンマがない形です。

{"to": [{"email": "構造太郎の宛先"}],"substitutions": {"-name-": "構造太郎"}},
{"to": [{"email": "構造次郎の宛先"}],"substitutions": {"-name-": "構造次郎"}},
{"to": [{"email": "構造花子の宛先"}],"substitutions": {"-name-": "構造花子"}}

Excelの行ごとに処理を繰り返すので「Loop」を選択します。

「Loop」を選択

読み込んだ行ごとに処理を繰り返すため、開始値は「0」、終了は「%ExcelData.RowsCount-1%」、増分「1」にします。ちなみに%ExcelData.RowCount%の変数名は画面上の {x}マークから自動選択できます。

パラメーターの選択1

パラメーターの選択2

ループ内で条件分岐するため、「条件」メニューの「If」と「Else」をループの中に配置します。

「If」と「Else」をループの中に配置

「If」は以下のように設定してください。これで最終行の判定を行います。

「If」の設定

「else」は配置するだけです。条件分岐の配置後は以下のような形になります。

条件分岐の配置後

分岐ごとに処理を定義します。変数の「項目をリストに追加」を選択してIfの中に配置してください。

「項目をリストに追加」を選択

項目の追加欄に以下の内容を定義します。最終行に該当するので末尾にカンマは入れないようにしてください。

{"to": [{"email": "%ExcelData[LoopIndex][0]%"}],"substitutions": {"-name-": "%ExcelData[LoopIndex][1]%"}}

追加先リスト欄ではリストの変数名を定義します。ここでは「%sendgridlist%」と名づけました。

リストの変数名を定義

Elseの中も同じように「項目をリストに追加」の処理を定義します。こちらの末尾にはカンマを入れます。

{"to": [{"email": "%ExcelData[LoopIndex][0]%"}],"substitutions": {"-name-": "%ExcelData[LoopIndex][1]%"}},

項目をリストに追加(末尾にはカンマを入れる)

以上でデータの加工に関する設定は終わりです。

SendGridの呼び出し

Web APIを呼び出す設定を行います。SendGridのアカウントをまだ持っていない方はFreeプランのアカウントを取得してください。アカウントを持っている方はメール送信の権限を与えたAPIキーを作成します。

Power Automate Desktopに再び戻って、アクションメニューのWebから「Webサービスを呼び出します」を選びます。

「Webサービスを呼び出します」を選択

以下の画面が表示されたら各項目を設定します。先ほど生成したAPIキーはカスタムヘッダーに設定します。

各項目を設定

項目名
URL https://api.sendgrid.com/v3/mail/send
メソッド POST
受け入れる application/json
コンテンツタイプ application/json
カスタムヘッダー Authorization: Bearer SG.xxxxxxxxxxxxxxx
要求本文
{
“personalizations” : [%sendgridlist%],
“from”: {“email”: “from@example.com”},
“subject”: “-name- 宛て”,
“content”: [
{
“type”: “text/plain”,
“value”: “-name- さんこんにちは”
}
]
}
応答を保存します ディスクに保存します(ファイル用)
ファイル名 完全なパス(宛先フォルダー + カスタム ファイル名)を指定します
宛先ファイルのパス 任意です。
要求本文をエンコードします デフォルトでONになっているのでOFFにします。

設定は以上です。

実行結果

画面の上にある実行ボタンを押すとExcelが起動してSendGridによる一斉送信が行われます。

実行ボタンをクリック


実行結果

画面右側に表示されるStatusCodeが202になれば送信は成功です。

まとめ

いかがでしたでしょうか?Power Automate Desktopを利用することで、Excelを含めた連携が簡単にできるようになります。データベースからCSVファイルをエクスポートして、一斉送信する場合などにも適用できる方法なので、ぜひ試してみてください。

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。