Plannerにはメールにて自身のタスクの期限状況を通知する機能がありますが、チームでPlannerを使用していてチームメンバーの進捗も把握したい場合などは、Plannerを都度表示して確認する必要があります。
チームで管理しているPlannerであればTeamsに通知があるほうが管理しやすいのではないかと思い、今回は「Power Automate にてPlannerの期限切れのタスクを担当者へのメンション付きでチャネルに通知する」フローについて紹介していきます。
フローの概要
今回のフローでは、パブリックのチーム・チャネルに以下の内容を通知します。
- メンション:タスクに割り当てられた担当者(複数人可)
- タスク名:タスクのタイトル
- 期限日:タスクの期限日
- リンク:タスクの詳細画面へのリンク
フローの構成は以下の通りとなります。
- 使用する変数を初期化
- タスクを取得し、期限切れかつ未完了か判定
- 通知対象のタスクの担当者のメンションを取得
- タスクの詳細画面へのリンクを作成
- Teamsへの通知
<フロー全体図>
Power Automate フローの設定
(1)トリガーを設定する
自動で通知されるようにスケジュールのトリガーを設定します。
今回は平日の10:00に開始されるように設定しています。
(2)「変数を初期化」アクションを設定する
このフローでは変数を2つ使用します。
タスクの担当者が複数人いる際に後の手順に出てくる取得したメンションを格納する配列変数です。
タスクの詳細画面へのリンクを格納する文字列変数です。
(3)「タスクを一覧表示します」アクションを設定する
TeamsのチームとPlannerのプランを選択します。
(4)「タスクを取得する」アクションを設定する
「タスクを一覧表示します」アクションの出力である動的アイテムの「値 ID」を挿入します。
挿入すると自動でApply to eachが生成されるので以降のアクションはこの中に作成していきます。
(5)「条件」アクションを設定する
「And」条件にて2つの条件を設定します。
- 1つ目はタスクの期限日時が前日未満であること
- 「タスクを取得する」アクションの出力である動的アイテムの「期限日時」
- 次の値未満
- 前日の日付の式
addDays(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), -1)
- 2つ目はタスクの達成率が100未満であること
- 「タスクを取得する」アクションの出力である動的アイテムの「達成率」
- 次の値未満
- 100
条件に一致したもののみ通知を行うため、以降は「いいえの場合」は使用せず、「はいの場合」のみアクションを設定します。
(6)「ユーザーの@メンション トークンを取得する」アクションを設定する
「タスクを取得する」アクションの出力である動的アイテムの「割り当て 割当先のユーザーID」を挿入します。
挿入すると自動でApply to eachが生成されます。
(7)「配列変数に追加」アクションを設定する
前項のApply to eachの中にアクションを追加し以下を設定します。
- 名前:メンション
- 値:「ユーザーの@メンション トークンを取得する」アクションの出力である動的アイテム「@mention」
(8)「結合アクション」を設定する
前項までのApply to eachの外側に追加し以下を設定します。
- 結合する配列:動的アイテムの変数「メンション」
- 次を使用して結合:表示には出ないが半角スペースを1つ
これにより、タスクに複数人の担当者がいる場合も1投稿に複数人メンションを記載することができます。
(9)「変数の設定」アクションを設定する
変数「URL」を設定します。
値に挿入する値について以下に解説します。
- 一度値のところにDを入れて一度フローを実行し実行結果を確認します。値に表示されている28文字を控えておきます。
- タスク詳細画面の「タスクへのリンクをコピー」からURLを取得し、こちらも控えます。
- URLの中からIDの値を検索して位置を特定しておきます。
- 値の部分を以下に書き換えます。
<a href="<URLのIDより前の部分><動的アイテム「ID」><URLのIDより後の部分>">タスク詳細</a><br>
ここでTeamsの通知文に載せるタスクの詳細画面へのリンクを作成します。
(10)「チャットまたはチャネルでメッセージを投稿する」アクションを設定する
以下を設定します。
- 投稿者:フローボット
※ユーザーでも構いませんが投稿者本人のメンションがある場合通知されません。 - 投稿先:Channel
- Team:投稿先のチーム
- Channel:投稿先のチャネル
- Message:
- 「結合」アクションの出力である動的アイテム「出力」
-
タスク名:タスクを取得する」アクションの出力である動的アイテムの「タイトル」
-
期限日:以下の式を挿入します。
formatDateTime(<「タスクを取得する」アクションの出力である動的アイテムの「期限日時」>, 'yyyy-MM-dd')
-
- リンク:動的アイテムの変数「URL」
(11)「変数の設定」アクションの設定
最後に複数のタスクがある場合タスクごとにメンションの配列変数が追加されていくことを防ぐため半角で[と]を入力しておきます。
以上でフローの設定は完了です。
手順6以降の階層について間違えやすいので「はいの場合」の順番を掲載しておきます。
おわりに
標準機能ではない通知方法をPower Automateにて実現する方法の1つとして、今回のタスク遅延通知を紹介させていただきました。
今回はチームで管理することを目的としてチャネル投稿としましたが、スレッドに返信する形やチャットでの投稿など変更することも可能です。