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