PowerAutomateとExcelを使って日付指定のメール送信を行う方法です。
これも案外、ネットでちょうど良い情報が無かったので自分で書いてみます。
メーラーを使えば良いじゃん、といった突っ込みはあるかと思います。
他に代替手段がある方はそれで良いのですが
自社の環境だと制約があるとか、社内的な手続が面倒だとか諸々の理由で
「PAとExcelでできればなぁ」という方はいると思うんですよね。自分以外にも。
私自身はスキルは無いのですが、必要があったので作ってみました。
スキルが無い分、初心者にも分かり易い作りになっているかと思います。
関心がある方は御覧ください。
やりたいこと
さて、今回やりたいことのイメージはざっくりこんな感じです。
①指定日に、指定する相手にメールを送信する
②メールは定型文だが、相手の名前を本文にも入れたい
③メールは締切までの作業依頼をするものである
PAのテンプレートにも毎日送信とか、毎週送信はあります。
でも日付指定ではなかったので、日付指定ならどうしたら良いかな、と思い作りました。
ざっくりフローはこんな感じ。
①エクセルのテーブルで、送信日と宛先を管理する
②PAを使い毎日エクセルを確認、送信日の行の情報を取込む
③宛先にメールを送信する
では具体的な中身の話です。
Excelの設定
まずはエクセルから。
こんな感じの表を作り、表はテーブル形式で保存してください。
(表の上でCTRL+Tを押すとテーブルになります)
「送信日」「提出日」は任意の日付を入力します。
「宛先名」は受取人名、「宛先アドレス」は受取人のメールアドレスです。
その他の項目についてはもう少し解説します。
「送信フラグ」
送信日には「OK」、それ以外は「-」が表示されるようにします。
PAは「OK」の場合にのみ、その行のデータを読み込むようにするため、その準備となります。
数式は以下のようにしました。
=IF([@送信日]=TODAY(),"OK","-")
「送信日text」「提出日text」
これは「送信日」「提出日」の日付データを、テキストデータに置き換えたものです。
メール本文に「送信日」をそのまま引用すると、「11月1日」と表示させたいものが
「44866」と数字表記になってしまいます。これはPA側で日付データが文字列として認識されるため。
これを回避するための措置で、それぞれ以下の数式を入れています。
=TEXT([@送信日],"mm/dd(aaa)")
=TEXT([@提出日],"mm/dd(aaa)")
Excelはこれで出来上がりです。Excelの保管場所は個人ならOnedrive、
会社ならSharepointやTeamsなど、Microsoft365のクラウド上にしておきます。
続いてPowerAutomate側の説明です。
PowerAutomateの設定
まずはPowerAutomateのホームから以下の順にクリックし、
「スケジュール済クラウドフローを構築する」を開きます。
「マイフロー」
「+新しいフロー」
「スケジュール済クラウドフロー」
「繰り返し時間」は1日おきにしておきます。
名前を付けたら「作成」を押します。ここでは「日付指定メール(ExceltoOutlook)」としました。
これからフローを作りますが、先に全体感をお見せするとこのようになります。
Recurrence
順番に参りましょう。1つ目に「Recurrence」から。
毎日、日本時間の10時に送信するなら、下記の設定となります。
表内に存在する行を一覧表示
2つ目に、「表内に存在する行を一覧表示」の部分を作ります。
「Recurrence」を作成したら、すぐ下の「+新しいステップ」を押し、次のアクションを検索します。
今回は”表内に存在する”などと入力し検索すると、候補を絞り込みできるでしょう。
EXcelOnlene(Bussiness)
EXcelOnlene(OneDrive)
上記2つがヒットするかも知れません。個人の方は後者を、企業の方は基本的に前者を選択します
(企業の方でも保管場所によっては後者となります)。
「ファイル」から対象のエクセルファイルを選択し、
「テーブル」で対象のテーブルを選択します。
「フィルタークエリ」
今回のポイントです。今回は指定日にだけメールを送信したいのでした。
PAが読込んで送信するのは、当日分のデータだけで良いのです。
エクセル側で、送信日の行に「OK」フラグが立つようしましたので、この「OK」があるかを読みます。
CHK列が、「OK」のものだけを選択するときは以下のように入力します。
CHK eq 'OK'
その他、「DateTime方式」は「ISO8601」を選択します。
ApplyToEachとメールの送信(V2)
3つ目にメール送信の設定です。
複数のメールを送ることもあるので、ここでは繰り返し処理の「ApplyToEach」を選び
その中にメール送信に関する設定をしています。
「*以前の手順から出力を選択」では、”動的なコンテンツ”から「value」を選択します。
同様に、
「件名」「本文」に文字列を差し込みたい場合も、”動的なコンテンツ”から選択します。
ここでは、件名に差し込む文字列を「提出日」ではなく「提出日text」を選択しています。
Excelのところでお伝えしたように、「提出日」だと「44866」のような数字が差し込まれてしまうためです。
画像は省略しますが、送信元を組織アドレスにしたい場合は
「差出人(メールボックス所有者として送信する)」に組織アドレスを入力すれば可能です。
CCなども同様に設定できます。
フローはこれで完成です。
あとは忘れないように保存して、念のためにテストをして使ってみてください。