はじめに
こんにちは、CODCサービス所属の高須です。
今回は Microsoft Power Automateを使って、Microsoft Teams上で特定の人物や、チームへメンションする方法を紹介します。なぜこの記事を書いたかというと、Power Automateでは、メールが来た時などにTeamsへ自動メッセージを送ったり、予定をリマインドする使い方が多いかと思いますが、Teams上でメンションしたいと思ったときにワンタッチでできる専用のアクションも特に無く、私自身方法を模索したからです。
本記事では、Power Automateでチーム内メンバーにメンションする方法を共有します。
■紹介する方法について
まず、Power AutomateでTeamsのユーザーにメンションするには、以下の手順で可能です。
1.コネクタ「Microsoft Teams」からアクション「ユーザーの@mentionトークンを取得する」を使用。
2.対象ユーザーの「ユーザープリンシパル名(UPN)」を入力。
3.取得したトークンをTeamsメッセージ内に挿入することで、メンションが可能になります。
ただし、この方法では複数人にメンションしたい場合、1人ずつトークンを取得する必要があり、非常に手間がかかります。
上記方法と比べ、今回ご紹介する方法では、以下のようなメリットがあります
・1つのフローで複数人にメンション可能
・条件設定により、メンション対象を柔軟に絞り込み可能
・チーム全体や特定の役職者など、状況に応じた通知が実現できる
この方法を使えば、たとえば「パートナー社員だけにメンションしたい」「特定のメールアドレスの人だけに通知したい」といったニーズにも対応できます。
■フロー全体
■フローの流れ
(1) Teamsグループメンバーの値(配列)を取得。
(2) 「Apply to each」で取得した配列をループ処理し、条件に合うメンバーのみを抽出する。
(3) 抽出したメンバーの「ユーザープリンシパル名」値を使って、メンション用トークンを取得する。
(4) 取得したメンション用トークンを配列変数に追加する。
(5) 配列に格納されたメンション情報をカンマ区切りで結合し、1つの文字列として出力する。
(6)Teamsのメッセージに出力された文字列を貼り付けることで、対象者にメンションが送られる。
作り方
概要
① TeamsチャネルのグループIDを取得
Teamsのチームチャット画面右上の「…(三点リーダー)」をクリック。
「チャネルへのリンクを取得」を選択し、表示されたリンクをコピー。
②グループIDの取得
取得したリンクをメモ帳などに貼り付け、リンクの「groupId=」から「&」までの値を抽出 する。この文字、数字の羅列がグループIDとなるためコピーする。
※ここからPowerAutomateのフロー作成となります
③グループメンバー一覧を取得
コネクタ「Office 365グループ」→ アクション「グループメンバーの一覧表示」を選択。「カスタム値の入力」に②で取得したグループIDを入力。
④配列を格納するための変数の設定
コネクタ「変数」→ アクション「変数を初期化する」を選択。
名前:メンション
種類:アレイ
値:空欄
⑤メンバー情報をループ処理(Apply to each)
コネクタ「コントロール」→ アクション「Apply to each」を選択、「以前の手順から出力を選択」に②で設定した「グループメンバーの一覧表示」の「value」値を設定する。
補足:「グループメンバーの一覧表示」の「value」値は、Teamsのチームチャットのグループメンバーの情報(名前、メールアドレス、ユーザープリンシパル名など)が配列データとして存在する。
⑥条件分岐で対象ユーザーを絞り込み(任意)
「Apply to each」内でコネクタ「コントロール」→アクション「条件」を設定し、取得するデータを絞り込むための条件を設定する。
(条件を設定していない場合はグループメンバー全員にメンションする設定となる)
●条件例
OR条件で「グループメンバーの一覧表示」の「メール」値を設定し、条件を「次の値に等しい」に設定、対象としてメンションしたいユーザーのTeamsと連携しているアドレスを記載する。
AND条件で「グループメンバーの一覧表示」の「役職」値を設定し、条件を「次の値に等しい」に設定、対象の役職(パートナー社員など、Teamsの個人プロフィールに記載されている)を設定する。
AND条件で「グループメンバーの一覧表示」の「メール」値を設定し、条件を「次の値に等しくない」に設定、メンションしたくないユーザーのTeamsと連携しているアドレスを記載する。
⑦メンション用トークンの取得
「Apply to each」内のアクション「条件」の「はいの場合」にコネクタ
「Microsoft Teams」→ アクション「ユーザーの@mentionトークンを取得する」
「グループメンバーの一覧表示」の「ユーザープリンシパル名」値を設定する
⑧メンション配列に追加
コネクタ「変数」→ アクション「配列変数に追加」を選択し、以下の通り設定
名前:メンション
値:⑦で設定した「ユーザーの@mentionトークンを取得する」の「@mention」値を設定
※ここからは「Apply to each」の外にアクションを追加してください
⑨メンション配列を結合(Apply to eachの外)
コネクタ「データ操作」→ アクション「結合」を選択し、以下の通り設定
結合する配列:メンション
次を使用して結合:, (カンマ)
⑩ Teamsメッセージに貼り付けてメンション
コネクタ「Teams」のメッセージなどに⑧で作成したコネクタ「結合」の「出力」値を設定すればチャットで条件設定した相手にメンションすることができる。
※ただし、○○ ○○ (○○ ○○),○○ ○○ (○○ ○○),○○ ○○ (○○ ○○),
のようにユーザー名が羅列する形でメンションされるため、人数が多い場合は注意が必要。
出力例
以上、本フローを既存のTeamsチャットフローに組み込むことでメンションすることができます。
まとめ
今回は、Power AutomateのTeamsチャット投稿でメンションする方法をご紹介しました。チャットを飛ばしたときにすぐ気づくようにしたい、誰向けの通知かわかりやすくしたいときなどにお試しください。
個人的にPower Automateには、この手順なしでもワンタッチでメンションする機能を実装して欲しいですがなかなか実装されずモヤモヤしています。技術的に無理なんでしょうか・・
Power Automateは非常に柔軟で便利なツールですが、こうした細かな工夫が必要な場面もまだまだあります。
今後のアップデートで、もっと直感的にメンションできる機能が追加されることを期待しつつ、今回の方法が少しでも皆さんの業務効率化に役立てば嬉しいです。
もし他にも便利な方法をご存じの方がいらっしゃいましたら、ぜひコメントやフィードバックで教えてください!