Microsoft 365 を利用しているとたいていは何らかのグループを管理・利用することになるかと思いますが、みなさんグループメンバーの追加・削除ってどうしていますか?
例えばユーザーの属性に応じて自動設定するようなグループの場合 (部署とか役職とか) には、Azure AD の 動的グループメンバーシップ を利用するのが正攻法かと思います。
ただしその場合には Azure AD Premium P1 のライセンスが要求されます。それほど高額ではないですが、メンバー数分となるとそこそこしそうですね。
あるいは、何らかの Excel表 なんかで管理している場合 (たとえば例外的なメンバーをExcel/Listで管理していて、それをグループにするようなケース) では、メンバーの追加・削除のタイミングで一覧同士を比較する必要があるかと思います。
このように、『何らかの対象ユーザー一覧をもとにしてグループメンバーを管理したい』というケースで使えそうなフローをご紹介します。
ただし中で使っているアクションの制約上、ユーザー1000人以下までが適用範囲です。
やること
考え方としては非常にシンプルです。
- まずは対象のユーザー一覧 を作成します。 (グループメンバーであるべき人のリスト)
- つぎに現在のグループメンバー一覧 を作成します。
- 2つの一覧を比較して、グループメンバー一覧に不足しているユーザーを追加します。
- 2つの一覧を比較して、グループメンバー一覧に余分に含まれているユーザーを削除します。
図にすると以下のようなかたちです。
最初に例にだした2つのケースでは、いずれも最初の『対象のユーザー一覧』部分の作りが違うだけで、2~4のステップは変わりません。
ということで、以下各ブロックの詳細です。
1. 対象ユーザーの一覧作成
ここはケースによって異なりますが、例えばユーザーの部署に基づくグループメンバー管理をする場合には、 Office 365 ユーザー コネクター を利用します。
まずは "ユーザーの検索(V2)" アクションで特に検索条件を指定せずに、上限1000ユーザー を全部取得します。部署による検索はできそうにないので、全件取ってその結果を "アレイのフィルター"アクションで篩にかけます。
最後に、"選択" アクションを利用して、UPNだけを残した配列を作成したら完成です。
Excel 表で管理している場合には、最初の ユーザー検索部分が Excel表からのデータ取得に変わるだけです。
この場合にも各行からUPNだけの配列を作成しています。
2. グループメンバー一覧作成
次に『現在だれがグループに所属しているのか』の一覧を作成します。これには Office 365 グループ コネクター を利用します。
対象となるグループを選択し、上限いっぱいの999人を取得します。
あとはアクションの結果から、UPNだけを含む配列を作成してください。
注意事項
このアクションでは、グループのオーナーは返却されません。ですので、グループのオーナーを変更するのだけは手作業で行ってください。
3. 不足メンバー追加
2つの一覧、『グループメンバーであるべき人のリスト』と『今グループメンバーになっている人のリスト』ができたので、あとはこれらを比較して不足していれば追加、過剰であれば削除を行っていきます。
2つの同じ構造をもった一覧を比較して差分を抽出するには "アレイのフィルター" アクションが有効です。
フィルターアクションの最初の入力には、対象ユーザーの一覧の 選択アクションの結果を指定します。 フィルター条件は『グループメンバー一覧 が item() を含まない』 にします。 これによってグループメンバーに含まれていない対象ユーザーだけを抽出できます。
あとはApply to each でグループに追加しましょう。
4. 不要メンバー削除
不要メンバー削除は追加ステップの逆をとります。
フィルターの最初の入力は、グループメンバーの一覧とし、フィルター条件は『対象メンバー一覧 が item() を含まない』 にします。 これで対象メンバーに含まれていないグループメンバーを選別できます。
今度は Apply to each でグループメンバーから削除を行いましょう。
以上で完了です。
このフローを1日1回回しておけば、最大1日のディレイでグループメンバーと対象ユーザーの同期がとれます。
おわり
比較的簡単なフローでグループメンバーを別の一覧と同期させることができました。
動的メンバーシップを管理できないような権限の場合や、属性でメンバーを指定できないから台帳で管理だ!という場合に参考にしていただければ幸いです。