ネストされたグループのメンバーをCSV化してSharePointに保存する方法(Power Automate)
Power Automateには「グループ メンバーの一覧を表示」アクションがありますが、このアクションではネストされたグループのメンバーを取得できません。
本記事では、親グループの中に子グループがメンバーとして含まれている場合に、すべてのメンバー(ユーザー)をCSVファイルに出力し、SharePointサイトのフォルダーに保存する方法を紹介します。意外と簡単に実現できます。
非常に実用的な内容ですので、活用したい場面でこの記事を思い出し、検索していただけるとうれしいです。
実はこの方法にたどり着く前に、子フローを使った手法も試しました。そちらでも面白い気づきがあったので、別の記事で紹介します。
用意されているグループ系のアクション
親グループの中に子グループが含まれる場合でもメンバー一覧を取得するには、Graph APIを使用する必要があります。
「HTTP 要求 (V2) を送信」アクション(グループ用)が利用できるため、プレミアムライセンスは不要でした。さらに、自分が参加していないグループのメンバー一覧も取得できました。
自分が参加していないグループも取得できたのは、管理者権限によるものかもしれません。この点については再度検証予定です。
検証用のグループを作る
4つのグループを作りました。グループ4だけはメールが有効なセキュリティグループにしてみました。
親グループ1
├ アデルさん
└ 子グループ2
├ メーガンさん
└ 孫グループ3
├ アレックスさん
└ ひ孫グループ4(メール付きセキュリティグループ)
└グラディーさん
グループIDの調べ方
Azure portal/Entra IDが使えるならそちらから調べればOKです。

Microsoft365管理センターが使えるなら、グループを開いたURLにあるのがグループIDです。

どちらも使えない人は、自分が参加しているグループならば以下から調べるとよいかと思います。
https://myaccount.microsoft.com/groups/groups-i-belong-to

クラウドフローを作る
仕組みはとても簡単です。すべてはHTTP要求のエンドポイントを見つけられたことで実現しています。
GET https://graph.microsoft.com/v1.0/groups/{group-id}/transitiveMembers/microsoft.graph.user
リファレンスはこちらです!
選択
選択アクションでは取得できた情報のなかで必要な項目(列)だけにそぎ落としています。注意点は入力にはvalueの配列をとってくるところくらいです。

body('HTTP_要求_V2_を送信する')?['value']
item()?['mail']
item()?['displayName']
テスト実行してみると、ちゃんと各グループのメンバーが配列として取得できています。

CSVファイルが文字化けしたら?
出力されたCSVファイルをExcelで開くと文字化けすると思います。その場合には、「ファイルの作成」アクションで、ファイルコンテンツに配置した「CSVテーブルの作成」出力の前に以下を式として配置しましょう。
decodeUriComponent('%EF%BB%BF')
なんでこれで文字化けが解消するのか?知りたい方はこちらを参照してください。
ファイル名に日付をいれる
その時点のメンバーを記録しておくために、ファイルに日付を入れることはよくあります。
フィル名の前とか後ろに以下の式を追加しましょう。
convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time','yyyyMMdd')

utcnow()関数は標準時ですが、上のようにすると日本時間の現在日付を取得することができます。
このあたりを詳しく知りたい場合にはこちらの記事をどうぞ。
追記
ちなみに、何万ユーザーも含まれているような大きなネストしたグループの場合、Power Automateが全部取得できるのか不安なところです。
ネストしているグループを孫やひ孫の代まで再帰的に巡回してCSVファイルに書き出すってのを別途試しましたので、そちらも近いうちに記事にしようと思います。
(というか、Graph APIの全取得エンドポイント知らなかったから、強引に取得していたのですが)
こんな人が書いています
こちらの記事はランゲルハンス島のDDさんが紹介しました。ブログでクラウドフローのTIPSのようなものを書いたり、Qiita記事を書いたりしていますのでご贔屓に。
フォローやいいねいただけると嬉しいです。
関西のPowerPlatform系の勉強会にときどき出没しますので、「あのアイコンの顔の人だ!」と、気軽に声をかけていただけると喜びます!



