【Power Automate】エクセルのリストを読み取りメールを個別に送信する
2021-12-6 | Power Automate
M 365 の Power Automate を使って、複数の宛先に個別にメールを送信したい!
Power Automate シリーズ(?)第 2 段です。
仕様書
- xlsx ファイルに保管されてるメールアドレス宛にそれぞれ行毎にメールを送信する。
- xlsx ファイルは、OneDrive または、SharePoint に保管する。
- 送信日時を xlsx ファイルに出力し、送信日時が空白以外の場合はメールを送信しない。
手順書
メールアドレスなどを読み取る xlsx ファイルの準備
- OneDrive なり SharePoint なりにメールアドレスなどを読み取るための xlsx ファイルを作る。
- テーブルを作成する。今回は下記のような感じにした。
テーブルの作成は、範囲を選択 -> タブ「挿入」->「テーブル」->「先頭業をテーブルの見出しとして使用する」にチェック -> 「OK」より行える。
ID | MailAddress | Name | SendAt |
---|---|---|---|
重複のないユニークな文字列 | 送信先メールアドレス | 送信先の名前 | メールの送信日時 |
Power Automate にてフロー作成
- Power Automate にアクセスして「マイフロー」 -> 「新しいフロー」 -> 「インスタント クラウド フロー」の順にクリックする。
- 「フロー名」は任意の名前、「フローのトリガーを選択してください」には「手動でフローをトリガーします」を設定する。
- 「フローの編集」へ推移するので、新しいステップ「タイム ゾーンの変換」を追加する。
「基準時間」は動的コンテンツから「タイムスタンプ」、「変換元のタイムゾーン」は「(UTC)協定世界時」、「変換先のタイムゾーン」は「(UTC+9:00)大阪、札幌、東京」、「書式設定文字列」はカスタム文字列として「yyyy-MM-dd HH:mm:ss」と入力する。 - 新しいステップ「変数を初期化する」を追加する。
名前は「日時」、種類は「文字列」、値は動的なコンテンツにある「変換後の時間」とする。名前は任意で良い。 - 新しいステップ「表内に存在する行を一覧表示」を追加する。
場所、ドキュメントライブラリ、ファイル、テーブルで xlsx ファイルとテーブルを指定する。 - 新しいステップ「Apply to each」を追加する。
「以前の手順から出力を選択」は動的なコンテンツから「value」を選択する。 - 「Apply to each」の中の「アクションの追加」から「条件」を追加する。
「SendAt」「次の値に等しい」「」(空白)と入力する。 - 「はいの場合」の中の「アクションの追加」から「メールの送信(V2)」を追加する。
「宛先」は動的なコンテンツから「MailAddress」、「件名」は任意、「本文」には動的なコンテンツから「Name」をテストのために含めておく。 - 同じく「はいの場合」の中の「アクションの追加」から「行の更新」を追加する。
場所、ドキュメントライブラリ、ファイル、テーブルで xlsx ファイルとテーブルを指定する。「キー列」は「ID」、「キー値」は動的なコンテンツの「ID」を選択する。その下に列が列挙されてるので「SendAt」に動的なコンテンツの「日時」を設定する - 画面の右上の「保存」をクリックしてフローを保存する。
テスト
- 画面の右上の「テスト」->「手動」->「テスト」をクリックしたら、xlsx ファイルに入力しているメールアドレス宛にメールが送信されてるか。また、xlsx ファイルに送信日時が出力されてるか確認する。
まとめ
めちゃくちゃ個人的なことなんだけど、前回のと合わせて Google Workspace でやってたことはだいたい移行完了できた。
WEB 系はちょっと無理かも。Power Apps 使えばある程度できるかもだけども。