リモートワークで導入して良かったツール詳しく見る

Power Automateでチームメンション・チャネルメンションを使う方法

じょじお

この記事ではPower Automateでチームメンション・チャネルメンションを使う方法について学習します。

この記事でわかること

  • Power AutomateでTeamsにチームメンション付きメッセージを送信する方法
  • Power AutomateでTeamsにチャネルメンション付きメッセージを送信する方法
目次

チームメンション・チャネルメンションを送る方法は?

まずPower Automateのメンションの基本のおさらいしましょう。

Power Automateのメンションを付けるにはTeamsコネクタの「ユーザーの@mentionトークンを取得する」アクションを使うのが基本で一番簡単かと思います。

しかし、このアクションはチームメンション・チャネルメンション・タグメンションなどには対応していないため、チーム全員へメンションを付けるには不便です。(2021年12月現在)

以前書いた記事ではループ処理を使って強引にチームメンバー全員のメンショントークンを付ける方法を紹介しましたがこの方法では宛先メンバーの数が増えるとメンショントークンの文字列がずらーっと並んでしまい不格好でした。(下記の記事参照ください)

Microsoft 365 groupsコネクタの「HTTP要求を送信します」アクションを使います。

Power Automate http要求を送信しますアクション

そこで、上記の方法以外でチームメンション・チャネルメンションを使用する方法を調べたところMicrosoft Graph APIを使ってメンション付きメッセージを送信する方法があるということがわかりました。

Graph APIとは、Microsoftが提供するAPIでTeamsなどのMicrosoftの様々なクラウドサービスにアクセスするための窓口的役割を担っています。Graph APIにHTTP Requestを送信すればTeamsにメンション付きメッセージを送信できるようです。

では「Power AutomateからHTTP Reqestを送信する方法はどのようなコネクタがあるのか?」ということなのですが、いくつかあるのですが今回はMicrosoft 365 groupsコネクタの「HTTP要求を送信します」アクションを使う方法を紹介します。このアクションはプレミアムコネクタではありませんので、Microsoft 365に付属するPower Automate for Microsoft 365のライセンスの範囲でも使用することができます。有料版Power Automateを契約していない環境でご利用されている方にオススメの方法です。

Graph APIの参考ページ

この記事で紹介する内容は下記のGraph APIのリファレンスを参考にしました。

事前準備

チームIDとチャネルIDを取得しましょう。

Graph APIからチームメンション・チャネルメンション付きメッセージを送信するには、チームIDチャネルIDが必要です。チームIDはチームを識別するための固有のID・チャネルIDです。

Graph APIでチームメンション・チャネルメンションに必要なもの!

  1. チームID
    • すべてのチームが持つ固有の識別子
  2. チャネルID
    • すべてのチャネルが持つ固有の識別子

チームIDとチャネルIDを取得する方法は?

じょじお

チームIDとチャネルIDを取得する方法はいくつかありますが、2つの方法を紹介します。どちらかの方法を参考に取得してください。

ぽこがみさま

Teamsアプリケーションから取得する方法がわかりやすいかなと思います。

チームIDとチャネルIDを取得する2つの方法!

  1. Teamsアプリケーションから取得する
  2. Graph API Explorerで取得する

TeamsアプリからチームID・チャネルIDを取得する方法

Teamsアプリから取得する方法
STEP
チャネルの「三点リーダー(…)」をクリックして「チャネルへのリンクを取得」をクリックします。
STEP
コピーをクリックします。

▲表示されたURLをコピーしましょう。このURLにチームIDもチャネルIDも含まれています。

STEP
取得したURLをデコードします。

取得したURLにチームIDとチャネルIDが含まれているわけですが、エンコードされているのでまずはデコードします。デコードする方法はいろいろありますがわたしは下記のWebサービスを利用しました。

https://meyerweb.com/eric/tools/dencoder/

▲上記の無料WebサービスにTeamsから取得したURLを張り付けて「Decode」ボタンをクリックするとデコードできます。

STEP
デコードしたURLから、チームIDとチャネルIDを抽出します。

https://teams.microsoft.com/l/channel/{チャネルID}/Mention?groupId={チームID}&tenantId=tenandID

▲デコードしたURLは上記のような文字列で構成されています。チャネルIDの部分(オレンジ)とチームID(グリーン)の部分をどこかにコピーしておきましょう。Power Automateフローを作成する時に使用します。

Graph API ExplorerからチームID・チャネルIDを取得する方法

Graph API Explorerから取得する方法

Graph API Explorerのくわしい使い方については省略します。下記の記事をあわせてご覧いただくとわかりやすいかなと思います。

STEP
ブラウザでGraph API Explorerを開きます。
STEP
Graph API Explorerにログインします。
STEP
クエリを実行してチームIDを取得します。
Microsoft Graph API Explorer

(GET)my joined teamsクエリを実行してチームIDを取得します。

クエリ(GET)
https://graph.microsoft.com/v1.0/me/joinedTeams

STEP
クエリを実行してチャネルIDを取得します。
Microsoft Graph API Explorer

▲チームIDを取得できましたら次のクエリを実行します。

①左側メニューの「channels of a team which I am member of」というクエリ をクリックします。②クエリに先ほど取得したチャネルIDを挿入して、③Run Queryボタンをクリックします。④チャネル一覧が表示されるのでターゲットとなるチャネルのIDをコピーします。

クエリ(GET)
https://graph.microsoft.com/v1.0/teams/{team-id}/channels

▲「channels of a team which I am member of」クエリ。マーカー部分にSTEP3で入手したチームIDに差し替えてクエリを実行します。

Power Automate フロー作成手順

じょじお

チームID・チャネルIDを取得できましたのでフローを作成していきましょう!

STEP
作成するフローの確認(フローの完成図)

▲まずはこれから作成するフローの完成図をお見せします(上図)。下の2つの「HTTP要求を送信します」アクションがTeamsにメッセージを送信する役割です。

ここではテストのために2つ「HTTP要求を送信します」アクションを使っています。1つがチームメンション、もう1つがチャネルメンションを付けてメッセージを送信しています。

STEP
Power Automateポータル画面を開きます。
STEP
インスタントクラウドフローを新規作成します。

今回はテストのためにインスタントクラウドフローで作成します。

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

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

STEP
「手動でフローをトリガーします」をトリガーに選択します。
Power Automate 手動でフローをトリガーします

▲フロー名を入力して「手動でフローをトリガーします」をトリガーに選択して「作成」をクリックします。

STEP
「変数を初期化する」を追加します。(本文用)
Power Automate 変数を初期化する

▲「変数」コネクタ>「変数を初期化する」アクションを追加します。この変数はTeamsに送信するメッセージの本文を格納しています。パラメータは下記のように入力しました。

  • 名前:本文
  • 種類:文字列
  • 値:Teamsで送信するメッセージの本文です。HTML形式で記述します。今回は下記のように記述しました。
<p>お疲れ様です!</p>
<p>このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。</p>
<ul>
<li>テストのリスト1</li>
<li>テストのリスト2</li>
<li>テストのリスト3</li>
</ul>
<p>以上、よろしくお願いします。</p>

▲今回は上記のようにメッセージを作成しました。HTMLを簡単に入力する方法はこちらで紹介しています。

じょじお

Graph APIを使う場合、Teamsに送信するメッセージ本文はHTMLで記述しないといけませんので注意してくださいね。

STEP
「変数を初期化する」を追加します。(チームID)
Power Automate 変数を初期化する

▲「変数」コネクタ>「変数を初期化する」アクションを追加します。前の項で取得したチームIDを格納します。

  • 名前:チームID
  • 種類:文字列
  • 値:チームIDを張り付けます。
STEP
「変数を初期化する」を追加します。(本文用)
Power Automate 変数を初期化する

▲「変数」コネクタ>「変数を初期化する」アクションを追加します。前の項で取得したチャネルIDを格納します。

  • 名前:チャネルID
  • 種類:文字列
  • 値:チャネルIDを張り付けます。
STEP
「HTTP要求を送信します」アクションを追加します。(チームメンション用)
Power Automate Http要求を送信します

▲「Microsoft 365 Groups」コネクタの「HTTP要求を送信します」アクションを追加します。

  • URI:https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
  • メソッド:POST
  • 本文:下記のように入力しました。
{
  "body": {
    "contentType": "html",
    "content": "@{variables('本文')}<at id=\"0\">All team members</at>"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "All team members",
      "mentioned": {
                        "conversation": {
                            "id": "@{variables('チームID')}",
                            "conversationIdentityType": "team"
                        }
      }
    }
  ]
}
じょじお

URIは、下記のURIの{チームID}と{チャネルID}の部分をご自身の環境のIDに差し替えて指定してください。

URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages

STEP
「HTTP要求を送信します」アクションを追加します。(チャネルメンション用)
Power Automate Http要求を送信します

▲「Microsoft 365 Groups」コネクタの「HTTP要求を送信します」アクションを追加します。

  • URI:https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
  • メソッド:POST
  • 本文:下記のように入力しました。

{
  "body": {
    "contentType": "html",
    "content": "@{variables('本文')}<at id=\"0\">一般</at>"

  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "一般",
      "mentioned": {
                        "conversation": {
                            "id": "@{variables('チャネルID')}",
                            "conversationIdentityType": "channel"
                        }
      }
    }
  ]
}
じょじお

URIは、下記のURIの{チームID}と{チャネルID}の部分をご自身の環境のIDに差し替えて指定してください。

URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages

STEP
フローが完成しました。テスト実行しましょう。
じょじお

フローは完成です。テスト実行をしてみます。

チームメンション
チームメンション

▲上図がチームメンションです。チームメンションのメンション文字列はチーム名と異なる文字列を使うこともできます。

チャネルメンション
チャネルメンション

「HTTP要求を送信します」アクションのまとめ

チームメンションとチャネルメンションの違い

「HTTP要求を送信します」アクションのJSONのここが違います。

Power Automate Http要求を送信します

▲図の赤枠の部分が異なります。

                        "conversation": {
                            "id": "チームID",
                            "conversationIdentityType": "team"
                        }
                        "conversation": {
                            "id": "チャネルID",
                            "conversationIdentityType": "channel"
                        }

エラー「Neither Body nor adaptive card content contains marker for mention with Id ‘0’. Add ‘****’ to the body or an adaptive card.」

Neither Body nor adaptive card content contains marker for mention with Id ‘0’. Add ‘****’ to the body or an adaptive card.

▲Power Automateに上記のエラーがでた場合、JSONの中身に誤りがある可能性があります。下記を参考にしてください。

Power Automate Http要求を送信します

bodyの中のContentで使用するid・メンションテキストと、mentionsに設定しているid・mentionTextは揃えてください(上図)。逆にいうと、ここが揃えてあればチーム名とは異なるメンションテキストでチームメンションできます。例えば私はtejilaboというチームに所属していますが、そのチームに「チームメンバー各位」というメンションテキストでチームメンションすることができます。

エンドポイントURI

URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages

▲チームメンションもチャネルメンションも、どちらを使用する場合もGraph APIのエンドポイントは同じです。

メッセージ本文に渡すHTMLを簡単に書く方法は?

Graph APIを使用する場合、メッセージ本文はHTMLで書かないといけません。(Mrakdownも使えるかもしれませんが使い方わかりませんでした)HTMLタグを使って自分で記述しても良いのですが面倒です。楽をする方法として「オンラインHTMLエディタ」という無料サービスを利用してHTMLを生成する方法を紹介します。

ぽこがみさま

HTMLが簡単にかけるよ。

STEP
「オンラインHTMLエディタ」にアクセスします。

オンラインHTMLエディタ

ログイン不要・無料で利用できるWebサービスです。

STEP
メッセージを作成します。
オンラインHTMLエディタ

▲図の赤枠に送信するメッセージを入力します。上部メニューには、強調表示・リスト・番号付きリスト・表組みなどのメニューがありますのでこれらを使って見栄えよく文章を整形しましょう。

STEP
「<>(ソースコード)」をクリックします。
オンラインHTMLエディタ

▲メッセージを入力したらメニューの右のほうにある「<>(ソースコード)」をクリックします。

STEP
HTMLをコピーします。
オンラインHTMLエディタ

▲ユーザーが入力した文字列からHTMLタグを含めたテキストを生成してくれます。コピーして利用しましょう。<body>タグは含めないように注意してくださいね。

タグメンションを付ける方法は?

Power Automateからタグメンションを付けてメッセージを送信する方法はわかりませんでした。わかれば記事を書こうと思います。

Microsoft 365 グループに設定した役職などの属性を使ってメンションを付ける方法は下記の記事が参考になるかもしれません。

まとめ

じょじお

以上、この記事ではPower Automateからチームメンション・チャネルメンション付きメッセージを送信する方法について学習しました。

ぽこがみさま

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

Power Automate学習教材

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

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

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

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

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

ノンプログラマーでも自動化スキルを身につける。

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる