前置き
Logic AppsでMicrosoft Todoのデータを利用していたところ、当日の完了タスクをフィルタ出来ない、完了したはずのタスクが残っている、などの意図せぬ挙動をしたので、原因追及をしました。
その結果、iOSのリマインダで利用した場合とMicrosoft TodoやLogic Appsから利用した場合に期限の挙動が変わってくる、ということが分かったのでメモを残します。
※ 本記事は2019/6/29時点の検証結果を元に書いています。今後の仕様変更などにより挙動が変わる可能性があります。
※ 2019/7/14追記 本件については、以下の記事も深く関連します
調査方法
- Microsoft TodoとiOSのリマインダの同期設定を行う(iOSの設定でOutlook.comのアカウントを追加)
- __iOSリマインダから__期限付きの繰り返し予定を作成する
- iOSリマインダ、Microsoft Todo、Logic Appsのそれぞれでタスクの完了を行う
- (1)作成したタスク、(2)完了したタスク、(3)完了後に生成された繰り返しタスク、のそれぞれの期限をLogic Appsで確認する
Logic Appsでの確認は、「フォルダー内のすべてのタスクの一覧表示」で得られた値のうち、"DueDateTime"の"DateTime"を参照。
結果
完了する方法 | iOSリマインダのアラーム日時 | (1)作成したタスクの期限 | (2)完了したタスクの期限 | (3)完了後生成された繰り返しタスクの期限 |
---|---|---|---|---|
iOSリマインダ | 2019/6/29 9:00 | 2019-06-29T00:00:00Z | 2019-06-29T00:00:00Z | 2019-06-30T00:00:00Z |
LogicApp | 2019/6/29 9:00 | 2019-06-29T00:00:00Z | 2019-06-29T00:00:00Z | 2019-06-30T00:00:00Z |
iOSリマインダ | 2019/6/29 12:00 | 2019-06-29T00:00:00Z | 2019-06-29T03:00:00Z | 2019-06-30T00:00:00Z |
LogicApp | 2019/6/29 12:00 | 2019-06-29T00:00:00Z | 2019-06-29T00:00:00Z | 2019-06-30T03:00:00Z |
iOSリマインダ | 2019/6/29 15:00 | 2019-06-29T00:00:00Z | 2019-06-29T06:00:00Z | 2019-06-30T00:00:00Z |
LogicApp | 2019/6/29 15:00 | 2019-06-29T00:00:00Z | 2019-06-29T00:00:00Z | 2019-06-30T06:00:00Z |
- Microsoft TodoとLogic Appsは同結果だったので割愛
- 同様に18時、21時のタスクも作成して試したが同様の結果だったので割愛
挙動のまとめ
完了する方法 | (2)完了したタスクの期限 | (3)完了後生成された繰り返しタスクの期限 |
---|---|---|
iOSリマインダ | アラーム時刻に書き換える | UTC 0時に設定する |
LogicApp | 書き換えを行わない | アラーム時刻に書き換える |
なお、今回はタスクの作成をiOSリマインダで統一しましたが、Microsoft TodoやLogic Appsでタスクを作るとまた挙動が異なります。
回避策
- Logic Appsを利用する前提であれば、iOSリマインダとの同期は行わず、Microsoft Todoのみを利用する
- iOSリマインダを利用する必要がある場合、日本時間9時(UTC 0時)でタスクを作成する。(iOSリマインダで完了してもMicrosoft TodoやLogic Appsで完了しても同じ結果になる)
2の回避策の場合は、任意の時間にアラームで通知したい、という機能は残念ながら諦める必要があります。
後書き
こんな仕組みを作っていました。
- Microsoft Todoでその日完了したタスクと未完了だったタスクをLogic Appsで収集し、SQL Databaseに格納
- 未完成の当日タスクはLogic Apps側で完了
- SQL Databaseに格納したタスクの達成度データをPowerBIで可視化
が、しばらく運用していると、次のような症状が出てきました。
- 完了したタスク、未完了のタスクが思ったようにフィルタリングできない
- Logic Apps実行後に当日のタスクが残っている
- 繰り返しタスクを完了すると自動で翌日のタスクが生成されるはずなのに、翌日以降のタスクとして生成されてしまう
対象のタスクはiOSのリマインダでもMicrosoft TodoでもLogic Appsでも完了することがあり、そこが原因ではないかと調べた内容が今回の記事になります。
なお、調査の際にはMicrosoft Todoのタスク情報をLogic Appsで抽出し、Excelに書き出しながら行いました。
かなりニッチですが同じような現象で困っている方のヒントになれば幸いです。