Microsoft365のPower Automateを使って、自動的にMicrosoft Teamsのチーム作成やチャネル作成が可能となります。この中でチームの作成については、パブリックチーム、プライベートチームともにPower Automateから作成可能ですし、パブリックチームを手動にてプライベートチームに変更することもできます。一方、チャネルについては、パブリックチャネルのみ作成可能で、後から手動での変更もできません。そこで、今回は、Microsoft Graph を組み合わせて、Power Automateからプライベートチャネルを作成する方法を紹介します。
Microsoft Graph とは
Microsoftの様々なクラウドサービスは、Webの管理画面やPower Automateなどから利用できる以外にも、数多くの機能が提供されています。それらをプログラムなどから利用するためのインターフェース群(API)がMicrosoft Graph API となります。(Microsoft Graph の概要 - Microsoft Graph | Microsoft Learn)HTTPのリクエストやPowerShellから呼び出すことができるので、今回のようにPower Automateの標準では提供されていない機能もMicrosoft Graph APIみ合わせることで機能拡張が可能となります。
Azure Active Directory でアプリの登録
Microsoft Graph を利用するにはAzure Active Directoryにアプリの登録を行い、アプリに権限を割り当てる必要があります。割り当てる権限によって、チャネルの作成や、ユーザーの追加など様々なAPIの機能が利用可能となります。Microsoft365の管理センターからAzure Active Directory管理センターを選択します。「Azure Active Directory」-「アプリの登録」-「新規作成」を選択します。
アプリケーションの名前を設定して、以下このような内容で登録します。
登録されたアプリケーションの「概要」を選択します。ここでは「アプリケーション(クライアント)ID」と「ディレクトリ(テナント)ID」が後程必要となるのでメモしておきます。
次に証明書の発行を行います。「証明書とシークレット」を選択して、「新しいクライアントシークレット」を選択します。説明を入力して有効期限を選択して「追加」を選択します。
「値」の部分が後程必要になるのでメモしておきます。
次に「APIアクセス許可」を選択して「アクセス許可の追加」を選択します。
一番上にある「Microsoft Graph」を選択します。
「アプリケーションの許可」を選択します。
アクセス許可を実施するリスト一覧が表示されます。この中からプライベートチャネルを作成する際に必要なアクセス権を選択してゆきます。必要なアクセス権はこちらのページ(チャネルを作成する - Microsoft Graph v1.0 | Microsoft Learn)から「アクセス許可」-「アプリケーション」の項目を参考にします。
このような要領で全ての必要な項目を選択して最後に「アクセス許可の追加」を選択します。※Channel.Create.Groupはリストに無いので選択不要
アラートがいくつか出ていますが、管理者の同意が必要ということなので、最後に「管理者の同意を与えます」を選択してアプリの登録は完了です。
Power Automateでフローの作成
次に、Power Automateから登録したアプリ(Microsoft Graph)を呼び出すためのフローを作成してゆきます。インスタンスフローを新規で作成します。アプリの呼び出し方は、HTTPリクエストを送信することになります。通常HTTPリクエストの送信にはプレミアムコネクタが必要となりますが、呼び出すMicrosoft Graphの機能によってはプレミアムコネクタを必要とせずにMicrosoft365のコネクタを利用することで代用可能な場合もあります。今回は2通りの呼び出し方を紹介します。
HTTPコネクタ(プレミアム)
まずはプレミアムコネクタの「HTTP」を利用した方法です。アクションから「HTTP」を選択します。
ここで必要となる情報として、先ほどアプリ登録の際にメモした“アプリケーション(クライアント)ID”、“ディレクトリ (テナント) ID”、“シークレットの値”と、プライベートチャネルを作成するチームの“チームID”となります。チームIDの調べ方は色々あります。今回はTeamsからチームのリンクの取得を選択してリンクから取得します。取得したリンクを見てみると“groupid=〇〇〇”とあるので、〇〇〇の部分(青字)がチームIDとなるのでメモしておきます。
https://teams.microsoft.com/l/channel/19%3at-bAv34L1KjjZG9lIs41JzKcvGfxViQ5C-oJIhpCsUU1%40thread.tacv2/%25E4%25B8%2580%25E8%2588%25AC?groupId=c96ffd4c-a96d-4452-a7af-7bf4b3a1612e&tenantId=edaa4d8b-ddfd-427c-9ab3-e6d841348b94
フロー作成画面に戻ります。「方法」は“POST”を選択します。URIは https://graph.microsoft.com/v1.0/teams/「グループID」/channels のような形式でグループIDを指定します。本文のjsonは以下となります。ユーザーアカウントの部分には、プライベートチャネルの所有者となるアカウントを指定します。
{
"@@odata.type": "#Microsoft.Graph.channel",
"displayName": "<チャネル名>",
"membershipType": "private",
"members": [
{
"[email protected]": "https://graph.microsoft.com/v1.0/users('<ユーザーアカウント>')",
"roles": [
"owner"
]
}
]
}
続いて、「詳細オプションを表示する」を選択します。テナント:“ディレクトリ (テナント) ID”クライアントID::“アプリケーション (クライアント) ID”シークレット:“シークレットの値”の値をそれぞれ入力します。
その他は同様の内容となります。
こちらで完成です。テスト実行してみましょう。
プライベートチャネルが作成されました!
Office365コネクタ(Users/Groups)
次にOffice365コネクタを利用した方法です。Office365コネクタの場合、「Office365 Users」、「Office365 Outlook」、「Office365 Groups」など数種類ありますが、どれにも「HTTP要求を送信する」という名前のアクションがあり入力項目も同じとなりますので、同様に利用可能です。今回は「Office365 Groups」コネクタを利用します。
Office365関連のコネクタを利用する場合は、コネクタのログイン情報を利用してリクエストを送信するので、Azure Active Directoryに登録したアプリ情報は不要となります。従ってとてもシンプルな設定項目となっています。
上記で作成したフローを実行すると、同様にプライベートチャネルが作成できました。
以上、Power AutomateからMicrosoft Graphを利用したプライベートチャネルの作成方法となります。コネクタによる呼び出し方の違いとしては、「HTTPコネクタ(プレミアム)」の場合は、コネクタのアカウント情報は不要でAzure Active Directoryに登録したアプリの権限によって実行されます。「Office365 HTTP要求の送信」の場合は、利用するコネクタのログインアカウントに基づいた権限で実行されるという点にあります。後者の場合、実行するユーザーがMicrosoft365のグローバル管理者であれば実行権限について問題ありませんが、一般ユーザーのアカウントの場合は呼び出すMicrosoft Graph APIによっては権限が足りずに実行できない場合もあります。そのような場合は、Azure Active Directoryに登録したアプリに適切な権限が割り当てられていれば、問題なくMicrosoft Graph APIを呼び出すことが可能となります。さらに、登録されたアプリは外部からプログラム経由で呼び出すことも可能となります。利用するユーザーやシーンによって、登録アプリ経由か、コネクタの実行アカウントで実行などうまく使い分けるとで、効率よくMicrosoft Graph APIが利用できるようになります。