MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Office 365 グループのメンバーを自動設定 (追加/削除) する フロー

Microsoft 365 を利用しているとたいていは何らかのグループを管理・利用することになるかと思いますが、みなさんグループメンバーの追加・削除ってどうしていますか?

例えばユーザーの属性に応じて自動設定するようなグループの場合 (部署とか役職とか) には、Azure AD の 動的グループメンバーシップ を利用するのが正攻法かと思います。

ただしその場合には Azure AD Premium P1 のライセンスが要求されます。それほど高額ではないですが、メンバー数分となるとそこそこしそうですね。

あるいは、何らかの Excel表 なんかで管理している場合 (たとえば例外的なメンバーをExcel/Listで管理していて、それをグループにするようなケース) では、メンバーの追加・削除のタイミングで一覧同士を比較する必要があるかと思います。

このように、『何らかの対象ユーザー一覧をもとにしてグループメンバーを管理したい』というケースで使えそうなフローをご紹介します。

ただし中で使っているアクションの制約上、ユーザー1000人以下までが適用範囲です。

やること

考え方としては非常にシンプルです。

  1. まずは対象のユーザー一覧 を作成します。 (グループメンバーであるべき人のリスト)
  2. つぎに現在のグループメンバー一覧 を作成します。
  3. 2つの一覧を比較して、グループメンバー一覧に不足しているユーザーを追加します。
  4. 2つの一覧を比較して、グループメンバー一覧に余分に含まれているユーザーを削除します。

図にすると以下のようなかたちです。

f:id:mofumofu_dance:20210212121124p:plain
フローの全体と考え方

最初に例にだした2つのケースでは、いずれも最初の『対象のユーザー一覧』部分の作りが違うだけで、2~4のステップは変わりません。

ということで、以下各ブロックの詳細です。

1. 対象ユーザーの一覧作成

ここはケースによって異なりますが、例えばユーザーの部署に基づくグループメンバー管理をする場合には、 Office 365 ユーザー コネクター を利用します。

まずは "ユーザーの検索(V2)" アクションで特に検索条件を指定せずに、上限1000ユーザー を全部取得します。部署による検索はできそうにないので、全件取ってその結果を "アレイのフィルター"アクションで篩にかけます。

最後に、"選択" アクションを利用して、UPNだけを残した配列を作成したら完成です。

f:id:mofumofu_dance:20210212121719p:plain
部署に基づいてグループを構成する場合

Excel 表で管理している場合には、最初の ユーザー検索部分が Excel表からのデータ取得に変わるだけです。

f:id:mofumofu_dance:20210212122427p:plain
Excelのテーブルで管理している場合

この場合にも各行からUPNだけの配列を作成しています。

2. グループメンバー一覧作成

次に『現在だれがグループに所属しているのか』の一覧を作成します。これには Office 365 グループ コネクター を利用します。

対象となるグループを選択し、上限いっぱいの999人を取得します。

あとはアクションの結果から、UPNだけを含む配列を作成してください。

f:id:mofumofu_dance:20210212122916p:plain
グループメンバー一覧の作成

注意事項

このアクションでは、グループのオーナーは返却されません。ですので、グループのオーナーを変更するのだけは手作業で行ってください。

3. 不足メンバー追加

2つの一覧、『グループメンバーであるべき人のリスト』と『今グループメンバーになっている人のリスト』ができたので、あとはこれらを比較して不足していれば追加、過剰であれば削除を行っていきます。

2つの同じ構造をもった一覧を比較して差分を抽出するには "アレイのフィルター" アクションが有効です。

フィルターアクションの最初の入力には、対象ユーザーの一覧の 選択アクションの結果を指定します。 フィルター条件は『グループメンバー一覧 が item() を含まない』 にします。 これによってグループメンバーに含まれていない対象ユーザーだけを抽出できます。

あとはApply to each でグループに追加しましょう。

f:id:mofumofu_dance:20210212125214p:plain
メンバー追加ステップ

4. 不要メンバー削除

不要メンバー削除は追加ステップの逆をとります。

フィルターの最初の入力は、グループメンバーの一覧とし、フィルター条件は『対象メンバー一覧 が item() を含まない』 にします。 これで対象メンバーに含まれていないグループメンバーを選別できます。

今度は Apply to each でグループメンバーから削除を行いましょう。

f:id:mofumofu_dance:20210212125352p:plain
メンバー削除ステップ

以上で完了です。

このフローを1日1回回しておけば、最大1日のディレイでグループメンバーと対象ユーザーの同期がとれます。

おわり

比較的簡単なフローでグループメンバーを別の一覧と同期させることができました。

動的メンバーシップを管理できないような権限の場合や、属性でメンバーを指定できないから台帳で管理だ!という場合に参考にしていただければ幸いです。