はじめに
概要については以下の記事で記載しているので
今回はアクションの詳細について記載
https://qiita.com/ctc-m-yomo/items/d5d7eac9b8c9b2b2d2ce
目次
- リマインドさせたいメッセ―ジを選択してアダプティブカードにて期限日を指定する
- 時間の加工
- メンバー一覧を配列変数に格納
- 遅延設定
- リアクションしたメンバーの抽出
- リアクションしていないメンバーの抽出
- リアクションしていないメンバーへTeamsでメンション
- 参考文献
1.リマインドさせたいメッセ―ジを選択してアダプティブカードにて期限日を指定する
アダプティブカードの編集を押すと以下のような画面が表示され自由に編集が可能
右ペインにあるIdをその後のフローで利用する
リマインダーさせたいメッセージをTeams上で選択し、PowerAutomateのフローを実行する
すると以下のようなアダプティブカードが表示されるため期限日を選択する
※補足※
アダプティブカードとは、視覚的にカレンダーなどGUIのようなものを表示させる機能
以下のURLがわかりやすそうだったので参考に記載
https://rpa.bigtreetc.com/column/adaptivecard101/
2.時間の加工
・1.で指定した日から3日減算させる(3日前に通知させるため)
・後述の遅延処理で利用するため時間追加させるためにタイムゾーンを協定世界時に変換させる
・始業の9時にリマインドするための時間追加処理
3.メンバー一覧を配列変数に格納
1.で選択したメッセージのチームIDよりグループメンバー一覧を取得
メンバー一覧を格納する配列(verGroupMember)を定義
グループメンバーの一覧表示から出力されるメンバーデータであるvalueをループで回して、
役職(jobTitle)がある人を配列に入れないように条件式で選別し、
jobTitleの項目がないユーザを変数verGroupMemberへ格納
参考:https://www.teijitaisya.com/powerautomate-mention-multicast/
4.遅延設定
2.で設定した期限の3日前に移行のアクションを実施するように遅延を設定
5.リアクションしたメンバーの抽出
・リアクションしたメンバーを格納するための配列(varReaction)を定義
・1.で選択したメッセージの詳細情報を取得する
・JSONの解析でメッセージの詳細情報
参考:https://note.com/loto0704/n/n0b9138ac9692
・JSONの解析からの出力reactionsでループを回して、リアクションしたメンバーのidをvarReactionへ格納
6.リアクションしていないメンバーの抽出
・リアクションしていないメンバーを格納するための配列(varNonReaction)を定義
・グループメンバーと5.で定義したリアクションしたメンバーの差分をアレイフィルターを用いてvarNonReactionへ格納
※アレイフィルタのcontains()の式
contains(variables('varReaction'), item())
参考:https://qiita.com/k_oshima23/items/cbf66ae53734a9fbc905
7.リアクションしていないメンバーへTeamsでメンション
・未リアクションメンバーの洗い出しからの本文をループで回してリアクションしていないメンバーからメンショントークンを作成
・1.で選択したメッセージに対してメッセージを投稿する
※メンションは現状Teamsの仕様上20人までしか指定できないため
それ以上メンションをする必要がある場合は考慮が必要
代替手段としては、@allなどチャネルへメンションするなど
本当はこの後に前日や当日での遅延設定を行い
同様にリアクションしていないメンバーへのメンションフローを実施したいが未作成
処理が同じのためループによって作成したい
というところで実装検討中・・・
以下、作る際に参考にしたサイト
8.参考文献
-
5.のJSONの解析の参考
PowerAutomateで配列の差集合を求める
-
6.の配列の差分抽出析の参考
Teamsでリアクションした人をPowerAutomateで一覧作成し取得する -
8.の複数人へのメンションメッセージ投稿の参考
【Power Automate】Teamsで複数人へメンション付きメッセージを送る