9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ExcelからPower Automateを使ってPlannerにタスクを作成する(バケット自動振り分け・ユーザー自動振り分け・チェックリスト作成)

Last updated at Posted at 2023-06-24

はじめに

最近Power Automateを使う機会が何回かあり、PlannerのタスクをExcelデータからPower Automateを使って作成することがありました。
その際に、タスクのチェックリストも一緒に作成しようと思ったのですが、Power Automateのタスク作成ではチェックリストは作れないことが分かりました。いろいろと苦労してうまくチェックリストも作れるようになりましたので、記事として紹介して、同じように苦労している方の一助になればと思います。
バゲットの自動振り分け、ユーザーの自動振り分けも行えるようにしています。

目標

Excel -> PowerAutomate -> Plannerと処理を行って
スクリーンショット 2023-06-30 11.23.57.png
以下のようなPlannerが作成されるようになります。
image.png

Plannerでプランを作成

パブリック・プライベートは任意で選択してください。
image.png
Plannerにメンバーを追加します
image.png

Excelデータ作成

事前条件

今回作成するExcelデータは三つのシート(テーブル)を作成します。
バケット名とタスク名と同じにしていますが、業務上その必要があったためです。
Plannerを使用しますので、担当者はMicrosoft365ユーザーとしています。
Excelに3つのシートにデータテーブルを作成しています。
Excel文書はOneDriveに保存します。

TaskTable作成

テーブルの項目としてはタスク名・担当者・期限日・説明を作成します。
担当者はPlannerで追加したメンバーのMicrosoft365ユーザーのメールアドレスです。
image.png

BucketTable作成

バケット名だけのテーブルです。
image.png

CheckListTable作成

TaskTableのタスク名と対応するチェックリストの項目を作成します。
image.png

Power Automate

インスタントクラウドフローを作成

image.png

手動でフローをトリガー作成

image.png

変数を初期化

以下のように設定します

  • 名前:Bucket
  • 種類:文字列
    image.png

Excel Onlineから表内に存在する行を一覧表示を選択

image.png
以下のように設定します

  • 場所:OneDrive for Buisiness
  • ドキュメントライブラリ:OneDrive
  • ファイル:/automate/Qiita用.xlsx(automateというのは任意のフォルダです)
  • テーブル:BucketTable
    *SharePointに保存している場合はSharePointとドキュメントを選択することもできると思います。
    image.png

変数の設定

image.png
名前:初期化した変数Bucketを選択します
image.png
値:表内に存在する行を一覧表示のバケット名を選択します
image.png
選択をするとApply to eachが自動的にセットされます
image.png
Apply to each内でアクションの追加を行いPlannerのバケットを作成する
image.png
以下のように設定します

  • 名前:変数のBucket
  • グループID:Plannerで作成したSamplePlan
  • プランID:Plannerで作成したSamplePlan
    image.png
    image.png

以上でバケット作成のフローは完成です。
次はタスク作成をします。

変数を初期化する2

Apply to eacheの外側のステップを作成して、変数の初期化を選択します。
以下のように設定します

  • 名前:BucketItems
  • 種類:アレイ
  • 値:[]
    image.png

Plannerのバケットを一覧表示するを選択

image.png
以下のように設定します

  • グループID:SamplePlan
  • プランID:SamplePlan

配列変数に追加を選択

image.png
以下のように設定します

  • 名前:変数のBucketItems
  • 値:以下のように手入力してください
{
    "TaskId": ,
    "TaskName":
}

※下の図では値が[ ] となってしまっていますが{ } が正しいですm(_ _)m。
image.png
BucketIdの横をクリックしてバケットを一覧表示するから値ID(バケットのID)を選択
image.png
BucketNameの横をクリックして値 名前(バケットの名前)を選択
image.png
以下のようになれば大丈夫です。(値IDの後にコンマ入れるの忘れないように)
image.png

Apply to each2の外側の新しいステップを作成してExcel Onlineから表内に存在する行を一覧表示を選択

image.png
以下のように設定します

  • 場所:OneDrive for Buisiness
  • ドキュメントライブラリ:OneDrive
  • ファイル:/automate/Qiita用.xlsx
  • テーブル:TaskTable ←ここが最初と違います
    image.png
    さらに詳細オプションを表示してDateTime形式をISO 8601にしてください
    これをしないとExcelの日付が正しく読み取れないです。
    image.png
    並び替え順を以下のように設定します。
    image.png

データ操作からアレイのフィルター処理を選択します

この処理でバケット名が一致するバケットIDを取得します。
image.png

  • 差出人:変数BucketItemsを選択
    image.png
  • 左辺:式を以下のように入力します
    image.png
  • 右辺:表内に存在する行を一覧表示2のタスク名
    image.png

Apply to each 3 内でアクションの追加、データ操作の作成を選択します

image.png

  • 入力:式を選択してfirst()と入力してください
    image.png
    first()の()の間にカーソルを合わせて、動的なコンテンツに切り替えて、アレイのフィルター処理の本文を選択
    image.png
    以下のようになればOK
    image.png
    さらに以下のように文字を追加してOKを押下
    image.png

Apply to each 3 内でアクションの追加、Plannerのタスクを作成するを選択します

image.png
入力項目がたくさんありますが、ほとんどはラベル用です。
ここを見ると分かりますが、チェックリストやメモなどがタスク作成には表示されません。
この辺りはそのうちPower Automateで実装されるのかもしれませんが、現時点ではまだないようです。
そのためここでタスク作成をした後、タスクの更新処理をする必要があります。

以下のように各項目を設定します

  • グループID:SamplePlan
  • プランID:SamplePlan
  • タイトル:表内に存在する行を一覧表示2のタスク名
    image.png
  • バケットID:カスタム値:作成の出力を選択
    image.png
  • 期限日時:表内に存在する行を一覧表示2の期限日
    image.png
  • 割り当てられたユーザーID:表内に存在する行を一覧表示2の担当者
    担当者はMicrosoftユーザーのメールアドレスです
    image.png

以上でタスク作成まで完成です。
ここまでで以下のように作成されているはずです。
image.png

次からはチェックリストとメモを作成するフローです。

Apply to each 3 の直前の個所でアクションの追加

image.png

変数を初期化するを選択します

image.png
以下のように設定します。

  • 名前:CheckListItems
  • 種類:アレイ
    image.png

Apply to each 3内でアクションの追加をします

image.png

Excel Onlineで表内に存在する行を一覧表示を選択

image.png
以下のように設定します。

  • 場所:OneDrive for Buisiness
  • ドキュメントライブラリ:OneDrive
  • ファイル:/automate/Qiita用.xlsx
  • テーブル:CheckListTable ←ここが違います
    image.png
    詳細オプションを表示してフィルタークエリを以下のように設定します
    image.png
    以下のようになっていればOKです。
    タイトルを' 'で囲んでいます。
    image.png

Apply to each3 内でアクションの追加、変数の設定を選択

image.png
以下のように設定します。

  • 名前:変数CheckListItesms
  • []
    image.png

アクションの追加、配列変数に追加を選択

image.png
以下のように設定します。

  • 名前:CheckListItems
  • 値:以下のように記述します
{
    "Id":,
    "title":,
    "isChecked":false
}

Idに表内に存在する行を一覧表示3のCheckIdを選択
image.png
titleに表内に存在する行を一覧表示3のチェックリストタイトルを選択
image.png
以下のようになればOKです
image.png

Apply to each4の外側のアクションの追加をします(位置に注意)

image.png

Plannerのタスクの詳細の更新を選択

image.png
以下のように設定します。
タスクID:タスクを作成するのID(タスクのID)を選択
image.png
説明:表内に存在する行を一覧表示2の説明を選択
image.png
チェックリストの個所でアレイ全体の入力に切り替えるをクリック
image.png

  • チェックリスト:変数CheckListItemsを選択
    image.png

以上でチェックリストとメモの更新は完了です。
ただこのままだとPlannerでチェックリストは非表示となっているので、カードに表示するに切り替えたいと思います。
Plannerで見るとこの部分です
image.png

ここはMicrosoftのUpdate plannertaskdetailを参考にしてください。

Apply to each3 内でアクションの追加、Office 365 Groupsを選択

image.png

HTTP要求を送信しますを選択

image.png
以下のように設定します。

  • URI:https://graph.microsoft.com/v1.0/planner/tasks//details
    tasks//detailsの//の間にカーソルを入れてタスクの詳細の更新のID(タスクのID)を選択します
    image.png
  • メソッド:PATCH
  • 本文:以下の記述
{
    "previewType":"checklist"
}
  • コンテンツタイプ:application/json
    詳細オプションを表示して以下のように設定します。
  • CustomHeader1:If-Match: と記述してから、さらに以下のように式を記入します
     substring(outputs('タスクの詳細の更新')?['headers']?['Etag'],2)
    image.png
    最終的に以下のようになればOKです
    image.png

以上で保存して実行すれば動作すると思います。
完成したフローは以下の通りです。
image.png

実行した結果

<バケット別>
image.png

<担当者別>
image.png

<進行状況別>
image.png

うまくいきました!
メモはタスクを開くと表示されます
image.png

✅カードに表示するはどちらかしか選べません。
メモとチェックリストは同時に表示はできないようです。

丁寧に記載したので長くなってしまいましたがご参考になれば幸いです。

9
6
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?