デスクワークを超絶快適にするおすすめギアたち詳しく見る

Power Automateからチームメンバー全員にメンションする方法!!

じょじお

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メッセージ

じょじお

メンバの数だけメンショントークンを作成します。人数が多いと文頭に置くのは邪魔になるので文末に置きました。(下図)

Teams

Power Automateフロー作成手順

STEP
Power Automateのホームページを開きます。

Power Automateのホーム画面はこちらです。

STEP
「インスタントクラウドフロー」を作成します。
Power Automate インスタントクラウドフロー

▲①左側メニューの作成をクリックして、②「インスタントクラウドフロー」を選択してフローを作成します。

Power Automate インスタントクラウドフロー

▲①フロー名に任意の名前を入力>②「手動でフローをトリガーします」>③作成をクリックします。

STEP
トリガーの設定をします。
じょじお

今回はメンションのテストなので、ボタンからメッセージを送信できるようにします。ボタンを押した時にTeamsに送信するメッセージ本文を入力できるようにします。

Power Automate

▲「+入力の追加」をクリックします。

Power Automate

▲ユーザー入力の種類の選択に「テキスト」を選択します。

Power Automate

▲入力欄のラベルテキストを入力します。任意のわかりやすいメッセージを入力してください。ここでは「メッセージのタイトル」と入力しました。

Power Automate

▲もうひとつテキスト入力を受け付けるボックスを用意します。こちらは「メッセージの本文」というラベルをつけます(図の赤枠)。

STEP
「Office365 Groups」コネクタの「グループメンバーの一覧表示」アクションを追加します。
Power Automate 新しいステップ

▲「新しいステップ」をクリックします。

Power Automate

▲「Group」というキーワードで検索して、「Office365 Groups」コネクタを探してクリックします。

Power Automate

▲ 「Office365 Groups」コネクタ の中の「グループメンバーの一覧表示」アクションを追加します。

▲メンションを送信するチームを選択します。

STEP
「変数を初期化する」アクションを追加します。
Power Automate

▲「変数」コネクタの中の「変数を初期化する」アクションを追加します。

  • 名前:任意の変数の名前を入力します。ここでは「arr」としました。
  • 種類:アレイを選択します。
  • 値:(空白)
STEP
「Apply to each」アクションを追加します。
Power Automate

▲「コントロール」コネクタの中の「Apply to each」アクションを追加します。入力値として、「グループメンバーの一覧表示」アクションの動的コンテンツ(動的な値)である「value」を選択します。

STEP
ループの中に「ユーザーの@mentionトークンを取得する」アクションを追加します。
Power Automate

▲Apply to eachループの中に「Teams」コネクタの中の「ユーザーの@mentionトークンを取得する」アクションを追加します。

ユーザー: 「グループメンバーの一覧表示」アクションの動的コンテンツ(動的な値)である 「ユーザープリンシパル名」を入力します。

STEP
ループの中に「作成」アクションを追加します。
Power Automate

▲「データ操作」コネクタの中の「作成」アクションを追加します。

入力:@{decodeUriComponent(outputs(‘ユーザーの@mentionトークンを取得する’)?[‘body/atMention’])}

じょじお

ここでは「ユーザーの@mentionトークンを取得する」アクションの戻り値(動的コンテンツ)をdecodeUriComponent関数でデコードしています。詳しくは次のColumnを見てね。

Column

decodeUriComponent関数でデコードが必要だよ!

「ユーザーの@mentionトークンを取得する」アクションで作成したメンショントークンはURIエンコードされた状態で戻ってきます。通常の組織内ユーザのみのチーム(グループ)であれば恐らく問題ないのですが、組織外の方をゲストユーザとして招待している場合、下記のように「#(シャープ)」が入ったUPN(ユーザープリンシパルネーム)になります。

組織外のゲストユーザのUPNの例 jojio_contoso.onmicrosoft.com#EXT#@tejilabo.onmicrosoft.com

「#(シャープ)」は、URIには使えない文字列なのでエンコード対象となります。試しに上の例のUPNを 「ユーザーの@mentionトークンを取得する」アクション に渡してみると下記のようにエンコードされたメンショントークンが戻ってきました。

<at>jojio_contoso.onmicrosoft.com%23EXT%23@tejilabo.onmicrosoft.com</at>

じょじお

「#」が「%23」にエンコードされていますね。

ぽこがみさま

このままTeamsのアクションに渡してもメンションとして機能しないにゃ・・

じょじお

そうだね。そこで使うのが 「decodeUriComponent関数」 なんだよ!

Power Automateの「decodeUriComponent関数」とは?

じょじお

decodeUriComponent関数は、URIエンコードされた文字列をエンコード前の文字列に戻してくれます(デコード)。

エスケープ文字をデコード バージョンに置き換えた文字列を返します。

式関数のリファレンスガイド – decodeUriComponent関数

使い方の例
decodeUriComponent(<at>jojio_contoso.onmicrosoft.com%23EXT%23@tejilabo.onmicrosoft.com</at>)

結果
<at>jojio_contoso.onmicrosoft.com#EXT#@tejilabo.onmicrosoft.com</at>

STEP
ループの中に「配列変数に追加」アクションを追加します。
Power Automate

▲「変数」コネクタの中の「配列変数に追加」アクションを追加します。

  • 名前:STEP5で作成した変数を選択します。
  • 値:STEP8の「作成」アクションの動的コンテンツである「出力」を入力します。
STEP
「結合」(参加?)アクションを追加します。
Power Automate

▲(Apply to eachループの外側に)「データ操作」コネクタの中の「参加(結合)」アクションを追加します。

  • 結合する配列:arr
  • 次を使用して結合:さん、
じょじお

配列のままだと、Teamsアクションの中で使えないので、一つの文字列にするために結合アクションを使います。山田さんのようにさんを付けて結合しています。

STEP
「チャットまたはチャネルでメッセージを投稿する」アクションを追加します。
Power Automate

▲パラメータを入力します。

**チームメンバ 各位**

# **@{triggerBody()['text']}** @{triggerBody()['text_1']}


@{body('結合')}さん

▲結合アクションだと最後のメンバだけさんが付かないので、最後のメンバ用に@{body('結合')}のあとにさんを付けています。

STEP
完成したフローをテスト実行します。
Power Automate

▲テスト実行してTeamsのメッセージを確認しましょう!

Teams
じょじお

文頭に「メンバー全員宛て」であることを書いたほうが実用的かと思います!

ちなみに、メンション部分がカッコ悪くて隠したかったので、アダプティブカードのShowcardの子カードのtextblockに含めたらエラーがでてうまくいきませんでした。書き方が悪いのか、非表示領域にメンショントークンを挿入できないようなエラーなのか不明です。なんとなく後者な気がしています。

まとめ

じょじお

以上、チームメンバ全員にメンションをつけてTeamsメッセージを送信する方法について解説でした。

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Power Automateを使っているなら絶対的にやっておいた方がいい設定1選!

▲フローの作成がしやすくなります。

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。

Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる