PowerAutomateで、Plannerにチェックリスト付タスクを作成

この記事は、[Power Automate Advent Calendar 2022](https://qiita.com/advent-calendar/2022/powerautomate) 12月16日担当分の記事です。

# 背景
今の部署だと、複数の部署について、同じ作業をすることが多い（複数の相手部署についての、同じAの作業を、担当分けて複数人で行うとか）のですが、その完了・未完了のチェック、処理もれのチェックは、ほぼ担当者の記憶か、Excelの（管理されていない）管理表で管理されていました。
その部署の分を担当している人任せにどうしてもなってしまい、処理もれが発生しそうで怖かったので、365に含まれているPlannerのチェックリストを使い始めたのですが、毎回同じチェックリストを作るのがめんどくさくなったので、PowerAutomateを使って、ぽちっとできるようにしてみました。

# フローの全体図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/2e54e887-4a86-ec7d-5528-18581a8d8f40.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/d6009a39-c0b3-ab18-d5d1-ba465bbca9f6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/ac451082-55d5-26dd-76f2-df0c4d204a46.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/e6e08862-4c55-a44a-f03b-40aaf367ab93.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/a3e32ad0-fae9-019e-2526-c451887edf2c.png)

# 説明
#### トリガー
トリガーは何でもいいと思いますが、ここではPlannerで作られるタスクの名前を入力します。自分の実際に使っているフローでは、入力項目を増やして、複数のパターンのチェックリストを作れるようにしているのもあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/2e54e887-4a86-ec7d-5528-18581a8d8f40.png)
#### チェックリスト用の配列を作成
ここで3つ配列（Array）を用意します。
1つ目の「項目」には、実際のチェックリストの中身を記載します。
2つ目の「チェックリスト」は、Plannerのタスクにチェックリストを設定するときに使うのですが、ここでは空のままにしておきます。
3つ目の「ID」は、チェックリストの並び順を指定するものです。ここでは「0」としておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/d6009a39-c0b3-ab18-d5d1-ba465bbca9f6.png)

タスクにチェックリストを設定するときは、以下のように記述する必要がありますので、「Apply to each」を使って、作っていきます。
```JSON:チェックリスト
[
  {
    "Id": 1,
    "Title": "チェックリスト1",
    "IsChecked": "False"
  },
  {
    "Id": 2,
    "Title": "チェックリスト2",
    "IsChecked": "False"
  }
]
```
「Apply to each」の出力の箇所は、チェックリストの項目を記載した変数の「項目」を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/394d2130-3180-2531-0cd5-517e855f34a7.png)

IDは、1から順にする必要がありますので、「Increment variable」を使って、1ずつ増やすようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/5590ad86-78d7-c8f3-a588-485e59da5252.png)

次に、「Append to array variable」を使って、変数の「チェックリスト」に追加していきます。
「Id」はチェックリストの順番、「Title」はチェックリストの項目名、「IsChecked」はチェック済みかどうかなので、未チェックとするため「"False"」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/2dbccf1d-e51b-4e4b-6610-d5e39a8e8d55.png)

これでタスクに設定する準備が整いました。

#### タスクの作成
最初に、タスクを作成します。グループや（Plannerの）プラン等を適宜設定してあげます。
「Title」はタスクの名前になるので、トリガーで入力した内容の「Input」を指定します。
ユーザーにアサインする場合は、「Assigned User Ids」にトリガーを起動したユーザーのメールアドレスを指定すると、このフローを実行した人にアサインすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/e6e08862-4c55-a44a-f03b-40aaf367ab93.png)

「Create a task」ではチェックリストの設定はできないので、「Update task details」を使って、タスクを更新するかたちで、チェックリストを設定します。
「Task Id」は直前の「Create a task」の「Id」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/b8a5f39c-09dd-ea79-2c43-0090f6df8a70.png)
チェックリストを設定するのは下部の方なんですが、最初は一つずつ入力する形式になっているので配列でまとめて設定するように切り替えて、変数の「チェックリスト」を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/de859f0e-2904-a27d-bb60-74642abebcfa.png)

これで完成です。うまく作成できれば、実行から数秒程度で以下の通りチェックリスト付きのタスクが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478238/ed78f9f2-0b01-7385-9e9f-4f66eb1ee3c0.png)

#### 注意
注意点がひとつあって、チェックリストの数は最大で20個までです。これは、Plannerの制限とのことで、どうにもならないようです。

# まとめ
このフローは、シンプルなものなのですが、エクスポートしておけば、インポートして変数「項目」のところをいじるだけで、各自のチェックリストを作れるので、PowerAutomateを布教するのに役立つかなあと思っています。
実際に、前の部署では、自分が作ったこのフローを微修正して使っているようなので、地味ですが使い勝手がいいかなと思っています。