はじめに
最近Power Automateを使う機会が何回かあり、PlannerのタスクをExcelデータからPower Automateを使って作成することがありました。
その際に、タスクのチェックリストも一緒に作成しようと思ったのですが、Power Automateのタスク作成ではチェックリストは作れないことが分かりました。いろいろと苦労してうまくチェックリストも作れるようになりましたので、記事として紹介して、同じように苦労している方の一助になればと思います。
バゲットの自動振り分け、ユーザーの自動振り分けも行えるようにしています。
目標
Excel -> PowerAutomate -> Plannerと処理を行って
以下のようなPlannerが作成されるようになります。
Plannerでプランを作成
パブリック・プライベートは任意で選択してください。
Plannerにメンバーを追加します
Excelデータ作成
事前条件
今回作成するExcelデータは三つのシート(テーブル)を作成します。
バケット名とタスク名と同じにしていますが、業務上その必要があったためです。
Plannerを使用しますので、担当者はMicrosoft365ユーザーとしています。
Excelに3つのシートにデータテーブルを作成しています。
Excel文書はOneDriveに保存します。
TaskTable作成
テーブルの項目としてはタスク名・担当者・期限日・説明を作成します。
担当者はPlannerで追加したメンバーのMicrosoft365ユーザーのメールアドレスです。
BucketTable作成
CheckListTable作成
TaskTableのタスク名と対応するチェックリストの項目を作成します。
Power Automate
インスタントクラウドフローを作成
手動でフローをトリガー作成
変数を初期化
以下のように設定します
Excel Onlineから表内に存在する行を一覧表示を選択
- 場所:OneDrive for Buisiness
- ドキュメントライブラリ:OneDrive
- ファイル:/automate/Qiita用.xlsx(automateというのは任意のフォルダです)
- テーブル:BucketTable
*SharePointに保存している場合はSharePointとドキュメントを選択することもできると思います。
変数の設定
名前:初期化した変数Bucketを選択します
値:表内に存在する行を一覧表示のバケット名を選択します
選択をするとApply to eachが自動的にセットされます
Apply to each内でアクションの追加を行いPlannerのバケットを作成する
以下のように設定します
以上でバケット作成のフローは完成です。
次はタスク作成をします。
変数を初期化する2
Apply to eacheの外側のステップを作成して、変数の初期化を選択します。
以下のように設定します
Plannerのバケットを一覧表示するを選択
- グループID:SamplePlan
- プランID:SamplePlan
配列変数に追加を選択
- 名前:変数のBucketItems
- 値:以下のように手入力してください
{
"TaskId": ,
"TaskName":
}
※下の図では値が[ ] となってしまっていますが{ } が正しいですm(_ _)m。
BucketIdの横をクリックしてバケットを一覧表示するから値ID(バケットのID)を選択
BucketNameの横をクリックして値 名前(バケットの名前)を選択
以下のようになれば大丈夫です。(値IDの後にコンマ入れるの忘れないように)
Apply to each2の外側の新しいステップを作成してExcel Onlineから表内に存在する行を一覧表示を選択
- 場所:OneDrive for Buisiness
- ドキュメントライブラリ:OneDrive
- ファイル:/automate/Qiita用.xlsx
- テーブル:TaskTable ←ここが最初と違います
さらに詳細オプションを表示してDateTime形式をISO 8601にしてください
これをしないとExcelの日付が正しく読み取れないです。
並び替え順を以下のように設定します。
データ操作からアレイのフィルター処理を選択します
Apply to each 3 内でアクションの追加、データ操作の作成を選択します
- 入力:式を選択してfirst()と入力してください
first()の()の間にカーソルを合わせて、動的なコンテンツに切り替えて、アレイのフィルター処理の本文を選択
以下のようになればOK
さらに以下のように文字を追加してOKを押下
Apply to each 3 内でアクションの追加、Plannerのタスクを作成するを選択します
入力項目がたくさんありますが、ほとんどはラベル用です。
ここを見ると分かりますが、チェックリストやメモなどがタスク作成には表示されません。
この辺りはそのうちPower Automateで実装されるのかもしれませんが、現時点ではまだないようです。
そのためここでタスク作成をした後、タスクの更新処理をする必要があります。
以下のように各項目を設定します
- グループID:SamplePlan
- プランID:SamplePlan
- タイトル:表内に存在する行を一覧表示2のタスク名
- バケットID:カスタム値:作成の出力を選択
- 期限日時:表内に存在する行を一覧表示2の期限日
- 割り当てられたユーザーID:表内に存在する行を一覧表示2の担当者
担当者はMicrosoftユーザーのメールアドレスです
以上でタスク作成まで完成です。
ここまでで以下のように作成されているはずです。
次からはチェックリストとメモを作成するフローです。
Apply to each 3 の直前の個所でアクションの追加
変数を初期化するを選択します
Apply to each 3内でアクションの追加をします
Excel Onlineで表内に存在する行を一覧表示を選択
- 場所:OneDrive for Buisiness
- ドキュメントライブラリ:OneDrive
- ファイル:/automate/Qiita用.xlsx
- テーブル:CheckListTable ←ここが違います
詳細オプションを表示してフィルタークエリを以下のように設定します
以下のようになっていればOKです。
タイトルを' 'で囲んでいます。
Apply to each3 内でアクションの追加、変数の設定を選択
アクションの追加、配列変数に追加を選択
- 名前:CheckListItems
- 値:以下のように記述します
{
"Id":,
"title":,
"isChecked":false
}
Idに表内に存在する行を一覧表示3のCheckIdを選択
titleに表内に存在する行を一覧表示3のチェックリストタイトルを選択
以下のようになればOKです
Apply to each4の外側のアクションの追加をします(位置に注意)
Plannerのタスクの詳細の更新を選択
以下のように設定します。
タスクID:タスクを作成するのID(タスクのID)を選択
説明:表内に存在する行を一覧表示2の説明を選択
チェックリストの個所でアレイ全体の入力に切り替えるをクリック
以上でチェックリストとメモの更新は完了です。
ただこのままだとPlannerでチェックリストは非表示となっているので、カードに表示するに切り替えたいと思います。
Plannerで見るとこの部分です
ここはMicrosoftのUpdate plannertaskdetailを参考にしてください。
Apply to each3 内でアクションの追加、Office 365 Groupsを選択
HTTP要求を送信しますを選択
- URI:https://graph.microsoft.com/v1.0/planner/tasks//details
tasks//detailsの//の間にカーソルを入れてタスクの詳細の更新のID(タスクのID)を選択します
- メソッド:PATCH
- 本文:以下の記述
{
"previewType":"checklist"
}
- コンテンツタイプ:application/json
詳細オプションを表示して以下のように設定します。 - CustomHeader1:If-Match: と記述してから、さらに以下のように式を記入します
substring(outputs('タスクの詳細の更新')?['headers']?['Etag'],2)
最終的に以下のようになればOKです
以上で保存して実行すれば動作すると思います。
完成したフローは以下の通りです。
実行した結果
✅カードに表示するはどちらかしか選べません。
メモとチェックリストは同時に表示はできないようです。
丁寧に記載したので長くなってしまいましたがご参考になれば幸いです。