令和になって3か月も経つので、課題やタスクをExcelで表を作りファイルサーバで管理して……みたいなことは卒業したい。
というわけで、Office365のアカウントが貰えたので、こちらに移行していきたい。
とりあえず、やってみたいことはこんな感じ。
- Excelで作った既存のタスクリストをOffice365に移行。
- 期日が迫っているタスクについて、担当者にリマインドを送る。
まずはExcelのリストをOffice365に移行する。
Excelの移行は、SharePointの機能を使えばスムーズにできる。詳細はMSのサポートページを参照。
インポートが成功すれば、SharePointのリストとして以下のように表示される。
※わかりにくいが、「塩冶真宏」と「塩冶真宏(私用)」でメールアドレスを分けている。
このリストの期日が一週間以内に迫っているものを、担当者に対して通知を行うような仕組みを作りたい。
SharePointリストメニューの「Flow」から期日を決めて通知を行えるようだが、以下のような動作になっており思った物とは違っていた。
- 期日のn日前にのみ通知(n日前を過ぎると通知が行われない)。
- 通知はフローの作成者に送られる。
- フロー作成者担当ではないタスクの通知も作成者に送られる。
- Office365のアドレスにしか通知が送られない。
というわけで、Microsoft Flowを使ってテンプレートのFlowを改修していくことにする。
Microsoft Flowを開いて作成したFlowの編集すると、以下のような構造になっている。
このFlowの詳細についての説明は割愛するが、
これを実行すると次のように、通知範囲の取得が行われているようだ。
※ 実行日は2019/07/30
Today + x daysとx Days + 1で取得範囲を決定しているので、ここを変更すれば取得範囲を変えられそう。
色々と試してみた結果、以下のようにすれば今日からn日後までに期日を迎えるリストが取得できた。
・Today + x days
・x Days + 1
(Days_to_remind_me_in はデフォルトで定義されているデータ)
通知対象の取得部分についてはとりあえずこれで良さそうなので、次は通知部分の変更を行っていく。
通知部分はデフォルトでは以下のようになっている。
Sharepointのリストから期日を迎えるタスクを取得し、文字列配列に要素を加えて整形する。整形したリストをnotifications機能を利用してフロー作成者に通知する。
これを、次のように改修する。
Sharepointのリストから期日を迎えるタスクを取得し、タスクの担当者宛にOffice365 Outlookを利用してEメール通知を行う。
改修したFlowは以下のようになる。
まずはループを一つ追加し、Sharepointからのデータ取得部と通知メールの送信部に分ける。
一つ目のループではSharepointのリストから「名称」「担当」「メールアドレス」「アイテムへのリンク」を取得し、「,」区切りの文字列配列に格納する。
二つ目のループは、一つ目のループで作成した文字列配列をキーにして、各レコードをsplit関数に渡して「,」で区切られた各要素をデータに格納していく。
作成したデータをOutlookに渡せば、担当者宛のメールが送信できる。
実際に送信されたメールが以下のようになる。
このようなメールが、各担当者宛に送られる。のだが、この状態だとタスク1件ごとにメールが送付されてしまう。
通知は一人に対して一通に纏めてしまいたいので、データの取得方法やメール配信内容の整形部分でもう一手間加えてやる必要がありそうだ。
やり始めると長くなりそうなので、最低限の機能は作れたということもあるので、一旦ここで区切りとする。