【Power Automate】エクセルのリストを読み取りメールを個別に送信する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Power Automate】エクセルのリストを読み取りメールを個別に送信する

2021-12-6 |

M 365 の Power Automate を使って、複数の宛先に個別にメールを送信したい!

Power Automate シリーズ(?)第 2 段です。

仕様書

  • xlsx ファイルに保管されてるメールアドレス宛にそれぞれ行毎にメールを送信する。
  • xlsx ファイルは、OneDrive または、SharePoint に保管する。
  • 送信日時を xlsx ファイルに出力し、送信日時が空白以外の場合はメールを送信しない。

手順書

メールアドレスなどを読み取る xlsx ファイルの準備

  1. OneDrive なり SharePoint なりにメールアドレスなどを読み取るための xlsx ファイルを作る。
  2. テーブルを作成する。今回は下記のような感じにした。
    テーブルの作成は、範囲を選択 -> タブ「挿入」->「テーブル」->「先頭業をテーブルの見出しとして使用する」にチェック -> 「OK」より行える。
ID MailAddress Name SendAt
重複のないユニークな文字列 送信先メールアドレス 送信先の名前 メールの送信日時

Power Automate にてフロー作成

  1. Power Automate にアクセスして「マイフロー」 -> 「新しいフロー」 -> 「インスタント クラウド フロー」の順にクリックする。
  2. 「フロー名」は任意の名前、「フローのトリガーを選択してください」には「手動でフローをトリガーします」を設定する。
  3. 「フローの編集」へ推移するので、新しいステップ「タイム ゾーンの変換」を追加する。
    「基準時間」は動的コンテンツから「タイムスタンプ」、「変換元のタイムゾーン」は「(UTC)協定世界時」、「変換先のタイムゾーン」は「(UTC+9:00)大阪、札幌、東京」、「書式設定文字列」はカスタム文字列として「yyyy-MM-dd HH:mm:ss」と入力する。
  4. 新しいステップ「変数を初期化する」を追加する。
    名前は「日時」、種類は「文字列」、値は動的なコンテンツにある「変換後の時間」とする。名前は任意で良い。
  5. 新しいステップ「表内に存在する行を一覧表示」を追加する。
    場所、ドキュメントライブラリ、ファイル、テーブルで xlsx ファイルとテーブルを指定する。
  6. 新しいステップ「Apply to each」を追加する。
    「以前の手順から出力を選択」は動的なコンテンツから「value」を選択する。
  7. 「Apply to each」の中の「アクションの追加」から「条件」を追加する。
    「SendAt」「次の値に等しい」「」(空白)と入力する。
  8. 「はいの場合」の中の「アクションの追加」から「メールの送信(V2)」を追加する。
    「宛先」は動的なコンテンツから「MailAddress」、「件名」は任意、「本文」には動的なコンテンツから「Name」をテストのために含めておく。
  9. 同じく「はいの場合」の中の「アクションの追加」から「行の更新」を追加する。
    場所、ドキュメントライブラリ、ファイル、テーブルで xlsx ファイルとテーブルを指定する。「キー列」は「ID」、「キー値」は動的なコンテンツの「ID」を選択する。その下に列が列挙されてるので「SendAt」に動的なコンテンツの「日時」を設定する
  10. 画面の右上の「保存」をクリックしてフローを保存する。

テスト

  1. 画面の右上の「テスト」->「手動」->「テスト」をクリックしたら、xlsx ファイルに入力しているメールアドレス宛にメールが送信されてるか。また、xlsx ファイルに送信日時が出力されてるか確認する。

まとめ

めちゃくちゃ個人的なことなんだけど、前回のと合わせて Google Workspace でやってたことはだいたい移行完了できた。
WEB 系はちょっと無理かも。Power Apps 使えばある程度できるかもだけども。