Power AutomateからTeamsへメッセージを送信する際に、メンションを使う方法をいくつかお伝えしました。今回はチームメンバー全員にメンションする方法について検証してみました。
Teamsのメンションって何ッ!?
そもそもメンションとは何なのか、メンションの使い分けの方法は下記の記事をご参考になさってください。
Power AutomateのTeamsコネクタのメンションの前提
おさらいになりますが、Teamsコネクタではいまのところチャネルメンション(@Channel)やチームメンション(@Team)やタグによるメンションが使えません。(2022年01月05日現在)
このため、複数人にメンションするには少し工夫する必要があります。
▲例えば、特定の職種の人だけにメンションを送る方法の例はこちら。
▲Power AutomateからのTeamsメッセージ送信におけるメンションの基本の解説はこちら。
Teamsコネクタ以外の方法でチームメンション付きメッセージを送信する方法
Teamsコネクタではなく、Microsoft Graph APIを使用する方法でしたらチームメンション・チャネルメンションを使うことができます。下記の記事では「Microsoft 365 Groups」コネクタの「HTTPを送信します」アクション使ってMicrosoft Graph APIにHTTPリクエストを送信する方法を紹介しています。「Microsoft 365 Groups」コネクタはプレミアムコネクタではありませんのでMicrosoft 365に付属するPower Automate for Microsoft 365でも使用することができます。
Teamsコネクタを使ってチームメンバ全員にメンションする方法
Teamsコネクタだけを使う方法はありますか?
Teamsコネクタだけを使う方法としてループ処理の中で全員分のメンショントークンを強引につける方法があります。
メンショントークンがずらっと並ぶので人数が多い場合はかっこうが良いものではないですが、わかりやすい方法だとは思います!
フロー完成図
「グループメンバーの一覧表示」アクションで取得したメンバーリストを基に、「ユーザの@mentionトークンを取得する」アクションで全員分のメンショントークンを作成します。
フローの実行によるTeamsメッセージ
メンバの数だけメンショントークンを作成します。人数が多いと文頭に置くのは邪魔になるので文末に置きました。(下図)
Power Automateフロー作成手順
▲①左側メニューの作成をクリックして、②「インスタントクラウドフロー」を選択してフローを作成します。
▲①フロー名に任意の名前を入力>②「手動でフローをトリガーします」>③作成をクリックします。
今回はメンションのテストなので、ボタンからメッセージを送信できるようにします。ボタンを押した時にTeamsに送信するメッセージ本文を入力できるようにします。
▲「+入力の追加」をクリックします。
▲ユーザー入力の種類の選択に「テキスト」を選択します。
▲入力欄のラベルテキストを入力します。任意のわかりやすいメッセージを入力してください。ここでは「メッセージのタイトル」と入力しました。
▲もうひとつテキスト入力を受け付けるボックスを用意します。こちらは「メッセージの本文」というラベルをつけます(図の赤枠)。
▲「新しいステップ」をクリックします。
▲「Group」というキーワードで検索して、「Office365 Groups」コネクタを探してクリックします。
▲ 「Office365 Groups」コネクタ の中の「グループメンバーの一覧表示」アクションを追加します。
▲メンションを送信するチームを選択します。
▲「変数」コネクタの中の「変数を初期化する」アクションを追加します。
- 名前:任意の変数の名前を入力します。ここでは「arr」としました。
- 種類:アレイを選択します。
- 値:(空白)
▲「コントロール」コネクタの中の「Apply to each」アクションを追加します。入力値として、「グループメンバーの一覧表示」アクションの動的コンテンツ(動的な値)である「value」を選択します。
▲Apply to eachループの中に「Teams」コネクタの中の「ユーザーの@mentionトークンを取得する」アクションを追加します。
ユーザー: 「グループメンバーの一覧表示」アクションの動的コンテンツ(動的な値)である 「ユーザープリンシパル名」を入力します。
▲「データ操作」コネクタの中の「作成」アクションを追加します。
入力:@{decodeUriComponent(outputs(‘ユーザーの@mentionトークンを取得する’)?[‘body/atMention’])}
ここでは「ユーザーの@mentionトークンを取得する」アクションの戻り値(動的コンテンツ)をdecodeUriComponent関数でデコードしています。詳しくは次のColumnを見てね。
decodeUriComponent関数でデコードが必要だよ!
「ユーザーの@mentionトークンを取得する」アクションで作成したメンショントークンはURIエンコードされた状態で戻ってきます。通常の組織内ユーザのみのチーム(グループ)であれば恐らく問題ないのですが、組織外の方をゲストユーザとして招待している場合、下記のように「#(シャープ)」が入ったUPN(ユーザープリンシパルネーム)になります。
「#(シャープ)」は、URIには使えない文字列なのでエンコード対象となります。試しに上の例のUPNを 「ユーザーの@mentionトークンを取得する」アクション に渡してみると下記のようにエンコードされたメンショントークンが戻ってきました。
「#」が「%23」にエンコードされていますね。
このままTeamsのアクションに渡してもメンションとして機能しないにゃ・・
そうだね。そこで使うのが 「decodeUriComponent関数」 なんだよ!
Power Automateの「decodeUriComponent関数」とは?
decodeUriComponent関数は、URIエンコードされた文字列をエンコード前の文字列に戻してくれます(デコード)。
エスケープ文字をデコード バージョンに置き換えた文字列を返します。
式関数のリファレンスガイド – decodeUriComponent関数
▲「変数」コネクタの中の「配列変数に追加」アクションを追加します。
- 名前:STEP5で作成した変数を選択します。
- 値:STEP8の「作成」アクションの動的コンテンツである「出力」を入力します。
▲(Apply to eachループの外側に)「データ操作」コネクタの中の「参加(結合)」アクションを追加します。
- 結合する配列:arr
- 次を使用して結合:さん、
配列のままだと、Teamsアクションの中で使えないので、一つの文字列にするために結合アクションを使います。山田さん
のようにさん
を付けて結合しています。
▲パラメータを入力します。
**チームメンバ 各位** # **@{triggerBody()['text']}** @{triggerBody()['text_1']} @{body('結合')}さん
▲テスト実行してTeamsのメッセージを確認しましょう!
文頭に「メンバー全員宛て」であることを書いたほうが実用的かと思います!
まとめ
以上、チームメンバ全員にメンションをつけてTeamsメッセージを送信する方法について解説でした。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automateを使っているなら絶対的にやっておいた方がいい設定1選!
▲フローの作成がしやすくなります。
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。