Power Automate DesktopとSendGridを使ってExcelの宛先リストに一斉送信する方法
- 2021年6月22日
- by 菊田 洋一
- Category: 技術ネタ
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は1行目が「email」「name」というヘッダで、読み込む必要はないため先頭行は「2」にします。今回用意したExcelのデータは4行目までなので最終行は「4」にします。冒頭のExcelと異なるデータを使うときは、そのファイルに合わせてそれぞれの値を変更してください。
データの加工
Excelデータの読み込み設定が終わったので、次はデータ加工の設定をします。具体的にはメールアドレスと名前を以下のような形式にします。最終行だけカンマがない形です。
{"to": [{"email": "構造太郎の宛先"}],"substitutions": {"-name-": "構造太郎"}}, {"to": [{"email": "構造次郎の宛先"}],"substitutions": {"-name-": "構造次郎"}}, {"to": [{"email": "構造花子の宛先"}],"substitutions": {"-name-": "構造花子"}}
Excelの行ごとに処理を繰り返すので「Loop」を選択します。
読み込んだ行ごとに処理を繰り返すため、開始値は「0」、終了は「%ExcelData.RowsCount-1%」、増分「1」にします。ちなみに%ExcelData.RowCount%の変数名は画面上の {x}マークから自動選択できます。
ループ内で条件分岐するため、「条件」メニューの「If」と「Else」をループの中に配置します。
「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サービスを呼び出します」を選びます。
以下の画面が表示されたら各項目を設定します。先ほど生成した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ファイルをエクスポートして、一斉送信する場合などにも適用できる方法なので、ぜひ試してみてください。