- Microsoft To Do のタスクには分類(カテゴリ)を設定できる
- Power Automate でToDoのカテゴリを設定する考え方
- 1.To Doタスクに設定されたカテゴリを取得する
- 2.To Doタスクにカテゴリを設定する
- 3.To Doタスクにカテゴリを1つ追加する
- 4.To Doタスクに設定されたカテゴリを1つ削除する
- 参考にしたサイト/ページ
- 補足事項
- さいごに
Microsoft To Do のタスクには分類(カテゴリ)を設定できる
Microsoft To Do ではタスクに カテゴリを使用して、タグ付け、ラベル付け、グループ化を簡単に行うことができます。今回はTo DoのカテゴリをPower Automateから操作する方法を調べてみました。
カテゴリは予めOutlookで設定しておく必要がある
Outlookの⚙️(設定)→アカウント→分類 に上記のカテゴリーを登録します。
※新しいOutlookの場合
Power Automate でToDoのカテゴリを設定する考え方
Microsoft To Do (仕事) コネクタのアクションを一通りチェックしましたが、カテゴリを操作するアクションは見当たりません。
「To Doを取得する (V3)」アクションで設定済みのカテゴリを取得することはできますが、「To Doを更新する (V3) 」「To Do を追加する(V3)」 アクションのパラメータとしてカテゴリは用意されていません。
そこでGraph APIをでのカテゴリの操作を検証したところ実現が可能でした。以下具体的な手順です。
1.To Doタスクに設定されたカテゴリを取得する
まずTo Do タスクに設定されているカテゴリを取得するフローです。
1-1.フロー全体
1-2.フロー解説
タスクのカテゴリは「Microsoft To Do (仕事)」コネクタの「To Do を取得する (V3)」アクションで取得できます。アクションの動的な値には表示されませんが、出力のJSONを確認するとcategories(カテゴリ)が含まれている事が確認できます。
たとえばこんな式で参照する事ができます。
outputs('To_Do_を取得する_(V3)')?['body/categories']
作成アクションに上記の式で参照するとタスクに設定されたカテゴリが取得できます。
2.To Doタスクにカテゴリを設定する
登録済みのタスクにカテゴリを設定するフローです。
Graph API のこちらのエンドポイントを利用します。
2-1.フロー全体図
2-2.フロー解説
2-2-1.[HTTP with Microsoft Entra (事前承認)] HTTP要求を呼び出します 💎
- 方法
- PATCH
- URI
- https://graph.microsoft.com/v1.0/me/todo/lists/@{variables('listId')}/tasks/@{variables('taskId')}
- このフローではlistId変数のタスクリストのid, taskId変数にタスクのidを格納しています。
- 本文
-
{ "categories":[ "オレンジの分類",
"黄の分類",
"紫の分類" ] }
-
Graph API でタスクを更新します。この時、アクションで指定した値でカテゴリは上書きされます。
3.To Doタスクにカテゴリを1つ追加する
メールのカテゴリに1つカテゴリを追加するフローです。
3-1.フロー全体図
3-2.フロー解説
3-2-1.[Microsoft To Do (仕事)] To Do を取得する (V3)
タスクを取得して、既存のカテゴリを参照します。
3-2-2.[データ操作]作成-カテゴリ追記
- 入力
-
union( outputs('To_Do_を取得する_(V3)')?['body/categories'], createArray('赤の分類') )
-
union関数で既存のカテゴリの値と追加するカテゴリの値を1つの配列にまとめます。上記の式では"赤の分類"を追加しています。
3-2-3.[HTTP with Microsoft Entra (事前承認)]HTTP要求を呼び出します-タスクを更新
Graph APIでタスクにカテゴリを反映します。
- 方法
- PATCH
- 要求のURL
- https://graph.microsoft.com/v1.0/me/todo/lists/@{variables('listId')}/tasks/@{variables('taskId')}
- このフローではlistId変数のタスクリストのid, taskId変数にタスクのidを格納しています。
- 本文
-
{ "categories":@{outputs('作成-カテゴリ追記')} }
-
4.To Doタスクに設定されたカテゴリを1つ削除する
メールに設定されたカテゴリから指定した1つのみを削除するパターンです。
4-1.フロー全体図
4-2.フロー解説
「3.カテゴリを1つ追加する」とほとんど同じです。「To Do を取得する (V3)」でタスクを取得し既存のカテゴリ設定値を参照します。
4-2-1.[データ操作]アレイのフィルター処理-赤の分類以外
- From
- @{outputs('To_Do_を取得する_(V3)')?['body/categories']}
- Filter Query
- @{item()}
- is not equal to
- 赤の分類
赤の分類を取り除いたアレイを作成します。
4-2-2.[HTTP with Microsoft Entra (事前承認)]HTTP要求を呼び出します-タスクを更新
Graph APIでタスクにカテゴリを反映します。
- 方法
- PATCH
- 要求のURL
- https://graph.microsoft.com/v1.0/me/todo/lists/@{variables('listId')}/tasks/@{variables('taskId')}
- このフローではlistId変数のタスクリストのid, taskId変数にタスクのidを格納しています。
- 本文
-
{ "categories":@{body('アレイのフィルター処理-赤の分類以外')}
}
-
参考にしたサイト/ページ
補足事項
「HTTP with Microosft Entra (事前承認)」コネクタについて
2025年1月10日現在の私の環境では「HTTP with Microosft Entra (事前承認)」コネクタで追加設定なしで今回のGraph APIエンドポイントを利用できましたが、今後は下記の考慮が必要になってきます。
【余談】プレミアムコネクタを使わずになんとかしたい
「HTTP with Microsoft Entra(事前承認」コネクタはプレミアムコネクタのため、Power Automate Premium などのライセンスが必要になります。
※2025年1月10日現在の私の環境では「Office 365 ユーザー」コネクタの「HTTP 要求を送信します」アクションでも同じ動作が実現できました。
ただし同アクションの説明では本来実行できないエンドポイントと思われますので利用するかは慎重に検討が必要かと思います。
さいごに
この記事の方法の活用例として、タスクのカテゴリを重要度と期限に基づいて自動更新するフローも作成してみました。