Power AutomateでTeamsのチャネルのリンクからチャネルIDとチームIDを取得する

Power Automateでチャネルへの投稿を自動化したい場合、チャネルIDとチームIDが必要です。この二つのIDをユーザーが取得しやすい「チャネルのリンク」から取り出す方法を紹介します。

Teamsのチームの各チャネルには直接チャネルにアクセスできるURLがあります。このURLはTeamsのチャネル名の右にある三点ボタンからメニューを開き「チャネルへのリンクを取得」を選択することで取得できます。ここで得られるURLには、チャネルIDとチームIDが含まれています。したがって、「チャネルのリンク」を入力として、「チャネルID」文字列と「チームID」文字列を出力とするフローを組むことができます。

フローの全体像

Power Automateのフローは以下の通りです。各処理の中身は後述します。

各アクションの解説

チャネルのリンク
データ操作の作成アクションです。「チャネルへのリンクを取得」で取得したURLを与えています。このアクションの代わりに、トリガーで入力するようにしたり、Power Appsから渡すようにしておくと活用しやすいでしょう。

URIデコード
データ操作の作成アクションです。入力には、作成アクション「チャネルのリンク」の出力を用いて「decodeUriComponent(outputs('チャネルのリンク'))」のように指定します。
「チャネルへのリンクを取得」で取得したURLは本来URIで使用できない文字列をエンコードした形式になっています。これを本来の文字列に直す変換操作であるURIデコードを行います。

URIを配列に分ける
データ操作の作成アクションです。入力には、作成アクション「URIデコード」の出力を使って式を「split(outputs('URIデコード'),'/')」と指定します。
チャネルのリンクは、以下のような構造をしています。「/」で文字列を分割すれば、5番目がチームID、6番目のgroupID=以降がチャネルIDであることがわかります。なお、0番始まりで数えている点に注意してください。

https://teams.microsoft.com/l/channel/{チームID}/{チャネル名}?groupId={チャネルID}&tenantId={テナントID}

チャネルID
データ操作の作成アクションです。入力には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[5]」と指定します。

テキストの位置の検索
テキスト関数のテキストの位置の検索アクションです。入力の「テキスト」には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[6]」と指定します。また、入力の「検索テキスト」に「groupId=」と指定します。
「outputs(‘URIを配列に分ける’)[6]」で取得した文字列から「groupId=」の位置を割り出し、後段の操作でこの文字列よりも後ろの部分を抜き出します。

部分文字列
テキスト関数の部分文字列アクションです。入力の「テキスト」には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[6]」と指定します。また、入力の「開始位置」に式「add(outputs(‘テキストの位置の検索’)?[‘body’],8)」と指定します。
「outputs(‘URIを配列に分ける’)[6]」で取得した文字列から「groupId=」の開始位置を割り出し、「groupId=」の文字数8を加えることで、「groupId=」の後ろの文字列を抽出します。

チームID
データ操作の作成アクションです。入力には、作成アクション「部分文字列」の出力を使って式を「split(outputs('部分文字列')?['body'],'&')[0]」と指定します。
「&」の後ろに続くtenantIdが不要なので、「&」で文字列を分割したうえで配列の先頭(0番目)の文字列を取り出します。

取得したチームIDとチャネルIDの使い方

Teamsの「チャットまたはチャネルでメッセージを投稿する」アクションを使う場合は、投稿先をチャネルとして上で、チームとチャネルに取得したIDを指定します。取得したIDを設定するには「カスタム値の入力」を選択します。

PowerAppsの「PowerAppsまたはFlowに応答する」アクションを使う場合は、出力追加でテキストを選択し、取得したIDの出力を追加します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください