Microsoft Flowで期日通知

令和になって3か月も経つので、課題やタスクをExcelで表を作りファイルサーバで管理して……みたいなことは卒業したい。

というわけで、Office365のアカウントが貰えたので、こちらに移行していきたい。

とりあえず、やってみたいことはこんな感じ。

  1. Excelで作った既存のタスクリストをOffice365に移行。
  2. 期日が迫っているタスクについて、担当者にリマインドを送る。

まずはExcelのリストをOffice365に移行する。

Excelの移行は、SharePointの機能を使えばスムーズにできる。詳細はMSのサポートページを参照。

インポートが成功すれば、SharePointのリストとして以下のように表示される。

※わかりにくいが、「塩冶真宏」と「塩冶真宏(私用)」でメールアドレスを分けている。

 

このリストの期日が一週間以内に迫っているものを、担当者に対して通知を行うような仕組みを作りたい。

SharePointリストメニューの「Flow」から期日を決めて通知を行えるようだが、以下のような動作になっており思った物とは違っていた。

  1. 期日のn日前にのみ通知(n日前を過ぎると通知が行われない)。
  2. 通知はフローの作成者に送られる。
  3. フロー作成者担当ではないタスクの通知も作成者に送られる。
  4. Office365のアドレスにしか通知が送られない。

というわけで、Microsoft Flowを使ってテンプレートのFlowを改修していくことにする。

Microsoft Flowを開いて作成したFlowの編集すると、以下のような構造になっている。

このFlowの詳細についての説明は割愛するが、

これを実行すると次のように、通知範囲の取得が行われているようだ。

※ 実行日は2019/07/30

Today + x daysとx Days + 1で取得範囲を決定しているので、ここを変更すれば取得範囲を変えられそう。

色々と試してみた結果、以下のようにすれば今日からn日後までに期日を迎えるリストが取得できた。

・Today + x days

formatDateTime(utcNow(), 'yyyy-MM-dd')

・x Days + 1 

addDays(outputs('Today + x days'),\
int(outputs('Days_to_remind_me_in')),\
'yyyy-MM-dd')

 Days_to_remind_me_in はデフォルトで定義されているデータ)

 

通知対象の取得部分についてはとりあえずこれで良さそうなので、次は通知部分の変更を行っていく。

通知部分はデフォルトでは以下のようになっている。

 Sharepointのリストから期日を迎えるタスクを取得し、文字列配列に要素を加えて整形する。整形したリストをnotifications機能を利用してフロー作成者に通知する。

 

 

 

 

これを、次のように改修する。

 Sharepointのリストから期日を迎えるタスクを取得し、タスクの担当者宛にOffice365 Outlookを利用してEメール通知を行う。

改修したFlowは以下のようになる。

まずはループを一つ追加し、Sharepointからのデータ取得部と通知メールの送信部に分ける。

 

一つ目のループではSharepointのリストから「名称」「担当」「メールアドレス」「アイテムへのリンク」を取得し、「,」区切りの文字列配列に格納する。

 

二つ目のループは、一つ目のループで作成した文字列配列をキーにして、各レコードをsplit関数に渡して「,」で区切られた各要素をデータに格納していく。

作成したデータをOutlookに渡せば、担当者宛のメールが送信できる。

実際に送信されたメールが以下のようになる。

このようなメールが、各担当者宛に送られる。のだが、この状態だとタスク1件ごとにメールが送付されてしまう。

通知は一人に対して一通に纏めてしまいたいので、データの取得方法やメール配信内容の整形部分でもう一手間加えてやる必要がありそうだ。

やり始めると長くなりそうなので、最低限の機能は作れたということもあるので、一旦ここで区切りとする。