Power AutomateからTeamsに通知を送るとき、宛先が1人であれば「ユーザーの@mentionトークンを取得する」を1つ置くだけで済みます。ところが宛先が複数人になると、トークンをどこで作って本文に入れるか考える必要があります。私は7人分のメンションを1通にまとめるところで詰まったので、そのときの手順をまとめます。
この記事でできること
この記事を読むと、Power AutomateからTeamsのチャネルにメッセージを1通だけ投稿し、その本文に複数人分の@メンションを並べられるようになります。
@mentionトークンをループの中で配列変数に貯めておき、ループの外に置いた投稿アクションで、その配列をまとめて本文に差し込みます。
完成イメージ
最初に、Power Automateのフローを確認しておきます。これを動かすと、チャネルに1通だけ投稿され、本文に対象者分のメンションが並びます。

全体の実装構成
流れは3段階です。
- 配列変数を初期化する
- Apply to eachで対象者をループし、その中で@mentionトークンを取得して配列に追加する
- ループの外で、貯めた配列を本文に差し込んでメッセージを1回投稿する
使うアクションは以下の5つです。置く場所がそのまま設計のポイントになります。
| アクション | 置く場所 | 役割 |
|---|---|---|
| 変数を初期化する | フローの先頭 | メンショントークンを貯める配列変数を用意する |
| Apply to each | メンション対象者のメールリストを取得した後 | 対象者を1人ずつループする |
| ユーザーの@mentionトークンを取得する | ループの中 | 1人分のメンショントークンを取得する |
| 配列変数に追加 | ループの中 | 取得したトークンを配列に貯める |
| チャットまたはチャネルでメッセージを投稿する | ループの外 | 貯めた配列を本文に差し込んで1通投稿する |
実装手順
Step1|配列変数varMentionsを初期化する
フローの先頭に「変数を初期化する」を置きます。設定は以下のとおりです。
| 項目 | 設定値 |
|---|---|
| 名前 | varMentions |
| 種類 | アレイ |
| 値 | 空のまま |
ここはメンショントークンを貯めるための器です。値を入れるのは次のステップからなので、この時点では空で問題ありません。

Step2|対象者をループして@mentionトークンを取得する
対象者の一覧は、SharePointリストの名簿で持っています。「複数の項目の取得」でリストを取得し、その結果をApply to eachでループします。
ループの中に「ユーザーの@mentionトークンを取得する」を置き、ユーザー欄には今ループしている行のメールアドレスを指定します。私は式で item()?[‘Email’] を指定しました。



Step3|取得したトークンを配列変数に追加する
同じループの中、トークンを取得した直後に「配列変数に追加」を置きます。
| 項目 | 設定値 |
|---|---|
| 名前 | varMentions(Step1で作った配列変数) |
| 値 | 動的コンテンツの「@mention(メッセージに挿入できます)」 |
値の欄は、動的コンテンツの一覧から「@mention(メッセージに挿入できます)」と表示されているプロパティを選びます。

これでループが1周するたびに、1人分のトークンが配列に積み上がっていきます。
Step4|ループの外でメッセージ本文に差し込む
ループの外に「チャットまたはチャネルでメッセージを投稿する」を置きます。投稿者はフローボット、投稿先はチャネルを選び、投稿先のチームとチャネルを指定します。
メッセージ本文に入れるのは variables(‘varMentions’) です。これで本文に配列の中身がまとめて入り、1通の投稿に全員分のメンションが並びました。
ハマりポイントまとめ
この実装で私が踏んだのは、次の2点です。
| # | 詰まったこと | 対処 |
|---|---|---|
| ① | @mentionトークンの取得が404で失敗する | テナント内に実在するM365ユーザーのアドレスに差し替え |
| ② | 複数の項目の取得で得たbody/value選択時に、Apply to eachのループ中にさらにループしてしまった | 2重ループとなったので1重に直す |
①のエラーは、次のような内容でした。
Request_ResourceNotFound
statusCode 404
Resource 'xxx@test.local' does not exist
@mentionトークンは、テナント内に実在するM365ユーザーに対してしか取得できません。私はテストデータとして架空のドメインのメールアドレスを入れていたため、この404が出ていました。名簿のアドレスを実在するものに差し替えて解消しました。
まとめ
今回のポイントは3つです。
- 配列変数に追加を使用して、ループの中で配列にメンションを貯める
- メンションを貯めた変数をループの外で1回だけ投稿する
- @mentionトークンは、テナント内に実在するM365ユーザーでないと取得できない
配列変数に複数の宛先を貯めることで1回の投稿に複数メンションが可能です。Power Platformを触り始めたばかりの方に向けて、こういった詰まりポイントをこれからも発信していきます。よかったらブログをブックマークして、またのぞきに来てください。
あわせて読みたい
同じフローに、失敗したときのエラー通知を後から付け足した手順も記事にしています。投稿の形ができたあとに読むと、フロー全体の組み立てがつながりやすいです。


コメント