
[Power Automate]リマインド業務の自動化
10月頭に「え、なにこれ便利じゃん」ってことに気が付いたMicrosoftのPower Automateですが手数が多めの処理が無事ローンチしたのでやり方を書いておこうと思います!(一部修正したいところがあるが)
え、めっちゃ恥ずかしいんだけど、Power Automate めっちゃべんりやんけ…。自動化するためにちょっと調べなきゃなーっていうの全部既存機能であったわ……
— ぱぴこ (@inucococo) October 11, 2021
Microsoft Power Automateって、なに!?みたいなところはぐぐってください。ノーコードのRPAって感じです。
私がやりたかったこと
今回やりたかったことは「定期会議の開催日 n日前にリマインドを自動送付」という仕事です。
地味に面倒&絶対発生する仕事に「リマインド業務」があります。「この日までに〇〇してねー!」みたいなあれですね。
outlook標準機能を使って「定期的に同一メールを送る」ということはできますが、月次、週次のリマインド業務はおおよそ「いつまでに、何を」という日時指定がキモなので、本文中を可変にできない上記だと色々と使い勝手が悪いです。
超簡単にやるなら、n日前に自分でトリガーを引いて、作成したメールを送付…とか色々とやり方はあるのですが、「何も考えずに完全自動化したい」がゴールだったので、「n日前になったことをPower Automateが判断して、メールを出す。かつそのメールの中身はその時々にあった情報に変更されている」を目指しました。
送付したいメールのイメージ
【リマインド】mm月経営会議 開催日時及び資料締切日
各位
mm月経営会議のお知らせです。
資料提出日と格納先をご連絡いたします。
■開催日時
yyyy/mm/dd (days)
■資料提出期限
yyyy/mm/dd (days) hh:mm
■提出先
格納フォルダ:yymmdd会議フォルダ
お忙しいところ恐縮ですが、ご対応お願いいたします。
どうってことないメールですが、地味に面倒です。勝手に送付してくれ!!!そして、yymmddhhmm系の情報を可変にしたい!実際に作成したフローを見ていきましょう。
実際のフローチャート
作成したチャートは4つです。
0. 情報元のデータベースを作ろう!
まず、下準備としてExcelで可変にしたい情報を持ったDBを作ります。ここでは月次での経営会議があった場合で記載しています。
会議名 / リマインド日 / 資料提出日 / 曜日1 / 会議開催日付 / 曜日2 / 資料格納先 の情報を記載しています。

Power Automateは日本語列名だと列名指定にひと手間かける必要があるので、適当な英数列名を付与するのがオススメです。
ちなみに会議開催日付よりn日前にリマインドメールを送付…ということだけなら、Power Automate側に判断させることも可能です。
ただ、会社業務上、土日にリマインドが飛ぶのは避けたい。そしてそのために営業日の判定処理を入れるより、元のDBに持たせたほうが楽だと判断して「リマインド日付」と「会議開催日付」をそれぞれ持つ構成にしています。
※上のExcelはサンプルなので土日が入ったままになってます。かしこ。
また開催によって提出先フォルダが異なるため、この情報(シェアポイントのURL)もDBに持たせています。
Power AutomateではExcel情報をDB処理する場合はテーブルに変換する必要があるので、変換範囲を選んで、挿入>テーブルで変換し、シェアポイントやドライブなど任意の場所に格納してください。
1. トリガーのセット
まず、リマインド送付のトリガーをセットします。
毎日8時に「今日がリマインドを出す日かどうか?」を判断させたいので、Recurrenceというタイマー機能をトリガーとしてセットします。

間隔/頻度/設定時刻など、走らせたい時間を好きにセットします。
2. 変数のセット
今日がリマインド発信日なのか?を判断させるために、比較演算子の元ネタを作ります。
ここでは「formatDateTime(utcNow(),'yyyy/M/d')」を利用して、「今日の日付を取得し、yyyy/M/d の形式で出力する」を指定しています。Mが大文字なのは、Power Automateの規則です。

取得結果はこんな感じです。ちゃんと欲しい情報が取れていますね!

3. DBから必要情報を取得
0で作成したDBから任意の情報を取ってきてほしいので、その処理です。
対象のDBをシェアポイントに置いているので、その場所とファイルを指定した上で、フィルタークエリの機能を使って手順2 で取ってきた「今日の日付」を Remind列の日付と比較します。
ポイントは変数を ’ ’ シングルクオーテーションでくくること!これがないとエラーになります。

日付がイコール(eq)だった場合に、処理が走る…という判断をここでやらせているわけです。
10月会議のリマインドの場合は、2のフローで取得した「2021/10/1」という日付がDB側にある「Remind列の2021/10/1」と一致したら、この行の情報を抜く、という処理になります。

4. メールの送付
メール送付自体は超簡単です。本文中の「可変」にしたい場所に「列名」を置いてあげれば10月なら10月、1月なら1月の情報がインプットされたメールが飛びます。
value で、フロー3で抜いたDB情報の全部を取ってきてね!とお願いしています。

で、可変にしたいところをそれぞれ埋め込んであげればOK。

格納フォルダの指定のみひと手間かかります。
html形式で直接ぶちこみます。
飛ばしたいフォルダのURLが月によって変わるので、以下のように設定してあげます。90年代の人間ならだれでもかける<a href="任意のURL">任意のテキスト</a>です。

テストを回してみて、無事に処理が走って手元に可変になっているメールが届けばOK!

おまけ:差出人を共有メールにしておく
事務局・PMO業務や、サポート業務の時に「作業の俗人化」を避けるために、Outolookで共有メールアドレスを作成することは多々あると思います。
メールの送信の「詳細オプション」を開くと「差出人」を指定できるので、ここに共有メールアドレスを指定しておけば、発信元が個人に紐づくこともなくなります。

やったぜ!自動化!
これでもう何も考えず、設定した日付にかってにリマインドメールが飛ぶようになりました!!!月次、週次、日時(は、ちょっと別の方法を考えますが)など、すべてExcelで表さえつくってしまえば自動化できるので、ToDoで「リマインド送付」とか設定する必要がなくなります~!いえーい!
その他、この「任意の条件で抽出し、対象へメールを送付」という業務は地味にいろいろな場所に転がっているのでPower Automateなどを利用してせっせと自動化していきましょう。
小さな自動化がんばろう!
嬉しい感想をいただいたので…がんばろう。

ここから先は
ありがとうございます。『あなたの課金は、私の課金』を標語に経済をまわしていきましょう。