
- 1. はじめに
- 2. 基本的な考え方
- 3. サンプルフロー全体図
- 4. フロー詳細解説
- 5.(応用)チームの新規メンバーがチャネルを表示するのに活用
- 6. 最後に
1. はじめに
Microsoft Teams を使っていると、チームに多くのチャネルがあるのに、自分の画面には一部のチャネルしか表示されていない、という場面に出会うことがあります。これは、チャネルの「表示/非表示」がユーザーごとに管理されており、既定では最初のチャネル(一般)以外は非表示になっているためです。
新しくチームに参加したときなどは、重要なチャネルが非表示のままになっていることも多く、ひとつずつ手作業で表示状態に切り替えるのは少し面倒です。
そこで今回は、Power Automate のクラウドフローを使って、指定したチームのチャネルをまとめて表示状態に切り替える方法を紹介します。Microsoft Teams コネクタには「チャネルを表示状態にする」という直接的なアクションは用意されていませんが、ちょっとした工夫で実現できます。
2. 基本的な考え方
ポイントは、Teams の 「セクション」 という機能を利用することです。
セクションは、チャネルやチャットをグループ化して整理できる機能です。そして、セクションにチャネルを追加すると、そのチャネルは自動的に表示状態に切り替わる という挙動があります。この挙動を利用します。
具体的には、クラウドフローで次の操作を行います。
- ダミーセクションを作成する
- ダミーセクションに、表示状態にしたいチャネルを追加する(ここでチャネルが表示状態になる)
- ダミーセクションを削除する
セクションを削除しても、いったん表示状態になったチャネルはそのまま表示状態を維持します。そのため、見た目上はセクションを作る前と変わらない状態で、目的のチャネルだけが表示状態に切り替わる、という仕組みです。
ポイント:ETag(バージョン情報)の引き回し
セクションを操作するアクションでは、リクエストのたびに ETag(バージョン情報)を If-Match ヘッダーで渡す 必要があります。これは、複数の更新が衝突しないようにするための仕組みです。
やや厄介なのは、セクションを操作するたびにこの ETag が更新される という点です。そのため、操作ごとに最新の ETag を取得し、次の操作に引き継いでいく必要があります。今回のフローでは、変数 ETag を用意して、操作のたびに値を上書きしながら使い回しています。
このあたりが、このフローを組むうえで一番のポイントになります。 詳しくはこちらの記事で解説しています。
3. サンプルフロー全体図
このフローは指定したチームのアクセスできるすべてのチャネルを表示状態にします。 フロー全体は次のような構成になります。
フローを手動でトリガーする
└─ 変数を初期化する - ETag
└─ チャネルの一覧表示
└─ List sections
└─ 変数の設定
└─ Create a section
└─ 変数の設定 1
└─ それぞれに適用する(チャネルの数だけ繰り返し)
└─ Add an item to a section
└─ 変数の設定 2
└─ Delete a section
4. フロー詳細解説
各アクションの設定内容を順番に見ていきます。
4-1. フローを手動でトリガーする
手動トリガー(ボタン)でフローを開始します。今回はシンプルに手動実行としていますが、後述の応用例のように、用途に応じてトリガーを変更することもできます。
4-2. [変数]変数を初期化する - ETag
ETag を保持するための変数を用意します。
| 設定項目 | 値 |
|---|---|
| 名前 | ETag |
| 種類 | 文字列 |
| 値 | (空のまま) |
以降のアクションで、この変数に最新の ETag を格納しながら使い回していきます。
4-3. [Microsoft Teams]チャネルの一覧表示
対象チームのチャネルの一覧を取得します。
| 設定項目 | 値 |
|---|---|
| チーム | 表示状態にしたいチームを指定 |
ここで取得したチャネルの一覧を、後続の「それぞれに適用する」で 1 件ずつ処理します。
4-4. [Microsoft Teams]List sections
対象チームの現在のセクション一覧を取得します(操作 ListSections)。
このアクションのレスポンスに含まれる @microsoft.graph.sectionsVersion が、最初の ETag として必要になります。
4-5. [変数]変数の設定
変数 ETag に、List sections で取得したバージョン情報を格納します。
ETag ← body('List_sections')?['@microsoft.graph.sectionsVersion']
4-6. [Microsoft Teams] Create a section(ダミーセクションの作成)
ダミーセクションを作成します。
| 設定項目 | 値 |
|---|---|
| If-Match | @variables('ETag') |
| Display Name | @convertFromUtc(utcNow(),'Tokyo Standard Time','yyyyMMddHHmmss') |
| Is Expanded | true |
| Sort Type | nameAlphabetical |
表示名には、他のセクションと名前が重複しないよう、実行時の日時(yyyyMMddHHmmss 形式)を利用しています。最終的に削除するため名前は何でも構いませんが、一意になるようにしておくと安心です。
4-7. [変数]変数の設定 1
セクションを作成すると ETag が変化するため、変数 ETag を作成後の値に更新します。
ETag ← outputs('Create_a_section')?['body/@odata.etag']
4-8. [コントロール]それぞれに適用する(Foreach)
「チャネルの一覧表示」で取得したチャネルの数だけ、次の処理を繰り返します。
繰り返しの対象:
outputs('チャネルの一覧表示')?['body/value']
4-8-1. [Microsoft Teams] Add an item to a section(チャネルをセクションに追加)
ダミーセクションにチャネルを追加します。この操作によって、対象のチャネルが表示状態に切り替わります。
| 設定項目 | 値 |
|---|---|
| Section ID | @outputs('Create_a_section')?['body/id'] |
| ETag | @variables('ETag') |
| Item ID | @items('それぞれに適用する')?['id'] |
4-8-2. [変数]変数の設定 2
チャネルを追加するたびに ETag が変化するため、変数 ETag を最新の値に更新します。これを忘れると、次のループや最後の削除でエラーになります。
ETag ← outputs('Add_an_item_to_a_section')?['body/@odata.etag']
4-9. [Microsoft Teams] Delete a section(ダミーセクションの削除)
最後に、作成したダミーセクションを削除します(操作 DeleteSection)。
| 設定項目 | 値 |
|---|---|
| Section ID | @outputs('Create_a_section')?['body/id'] |
| ETag | @variables('ETag') |
セクションを削除しても、すでに表示状態になったチャネルはそのまま残ります。これで、見た目はフロー実行前と同じまま、目的のチャネルだけが表示状態に切り替わった状態になります。
5.(応用)チームの新規メンバーがチャネルを表示するのに活用
ここまでのフローは、groupId に指定したチームのチャネルをまとめて表示状態にするものでした。これを応用すると、チームに新しく参加したメンバーが、自分の画面に全チャネルを一括表示する運用ができます。
ポイントは、チャネルの表示/非表示が フローを実行したユーザー(コネクタの接続アカウント)の画面に反映される ことです。そのため、新しく参加したメンバー自身にフローを実行してもらう必要があります。
具体的な運用案は次のとおりです。
5-1. フローの「実行のみのユーザー」に対象チームを追加する
新規メンバーがこのフローを実行できるよう、フローの 「実行のみのユーザー」 の設定に対象のチームを追加します。これで、チームのメンバーがフローを実行できるようになります。
5-2. フローの実行用 URL を組み立てる
フローの管理画面の URL の末尾にある /details を /run に置き換えた URL を作成します。
管理画面の URL:
https://make.powerautomate.com/environments/{環境id}/flows/{フローID}/details
実行用の URL(末尾を /run に置き換え):
https://make.powerautomate.com/environments/{環境id}/flows/{フローID}/run
5-3. 実行用 URL をチームの一般チャネルに投稿して案内する
組み立てた実行用 URL を、チームの 「一般(General)」チャネル に投稿し、新規メンバーには参加時に必ず実行するよう案内します。
これで、新しく参加した人は案内された URL を開いてフローを実行するだけで、自分の画面に全チャネルが表示状態になります。ひとつずつチャネルを表示する手間がなくなり、オンボーディングがスムーズになります。
5-4. 想定する使い方
こんなふうに使えるんじゃないかなというイメージです。
[1] チームに招待されたら一般チャネルの案内メッセージからフロー実行リンクをクリックします。
[2] 表示されたフローを実行します。
[3] フローが実行されました。
[4]Teamsに戻るとチャネルが表示されています!
6. 最後に
今回は、Power Automate のクラウドフローで Teams のチャネルを表示状態に変更する方法を紹介しました。
「セクションにチャネルを追加すると表示状態になる」という挙動を利用し、ダミーセクションの作成 → チャネルの追加 → セクションの削除、という流れで実現しました。ポイントは、セクション更新系アクションで ETag を適切に扱う ことです。
なお、今回のフローはシンプルにするためにあえて考慮していませんが、すでにセクションに追加済みの状態でさらにセクションに追加しようとするとエラーが発生します。今回の方法を応用する場合にはこれにも注意が必要です。




























































