はじめに:なぜこれをやりたいのか
Office365 グループ(Teams のチーム) の場合、その名前でグループを取得(検索)するアクションが用意されています。
しかしこれが従来のセキュリティ グループの場合、名前で検索することができません。
(Azure AD のコネクタに、グループを取得するアクションはあるのですが、IDを指定しなければなりません)
そこで代わりにMicrosoft Graph API を使用すると、グループ名をキーにして取得することができます。
事前準備:Azure ADへのアプリケーション登録とアクセス許可の設定
実際にMicrosoft Graph API を使用してグループを取得する前に、事前準備が必要です。
こちらのドキュメントを参考に実施しておいてください。
(事前と書きましたが実際にはフローを実行する前に済ませておけばOKです)
【補足】
上記ページの後半、「[ API アクセス許可の要求] ブレードで、・・・」で始まる記載の個所は今回以下のようにしています。
・ [委任されたアクセス許可] → [アプリケーションの許可]
・ [すべてのグループの読み取りと書き込み] アクセス許可 → [Group.Read.All]
※今回は取得なので、必要最低限の権限という意味で読み取りのみとしています
また、ページ中段、「MS Graph バッチアプリブレードで、・・・」で始まる記載の個所で説明されているアプリケーション (クライアント) IDと、
ページ下段、「MS Graph バッチアプリブレードの [管理] セクションで、・・・」で始まる記載の個所で説明されている新しいキーの値をコピーしておきます(後で使います)
グループを取得するためのHTTP アクションの追加
準備ができたら、グループを取得するためにMicrosoft Graph API を呼び出すアクションを追加します。”HTTP” と検索して その名の通りHTTPというアクションを追加します。
【重要】
下の画像にもあるように、このHTTPアクションはプレミアム コネクタに分類されていて、利用にはスタンドアロンの Power Automate ライセンスが必要です。Office365 のプラン(E1, E3等)に含まれるライセンスでは利用できませんので、ご注意ください。
Power Apps と Power Automate のライセンスに関するよくあるご質問 – Power Platform Admin center | Microsoft Docs
追加したHTTPアクション内に、グループを取得するGraph API を呼び出す設定を入れていきます。
Method: [GET] を選択
URI: https://graph.microsoft.com/v1.0/groups?$filter=startswith(displayName,'<取得したいグループの表示名>') ※名前をシングルクオーテーションで挟むのを忘れずに
Headers:
以下のように入力Enter key と表示されているところに Content-type
Enter value と表示されているところに application/json
Authentication:
[Active Directory OAuth] を選択- Tenant: 取得したいグループが登録されているOffice 365 (Azure AD) のテナント名(xxxxx.onmicrosoft.com)
- Audience: https://graph.microsoft.com
- Client ID: 上記の [事前準備] でコピーしておいたアプリケーション (クライアント) IDを貼り付けます
- Credential Type: [Secret] を選択
- Secret: 上記の [事前準備] でコピーしておいたキー値を貼り付けます
【補足】上記の例では、URI は文字通り”startswith” (前方一致) で検索するようフィルターの指定をしています。この場合一致しているものが複数あれば結果が複数になりますので、完全一致にしたい場合は “eq” とします。このあたりのフィルターのパターンについては以下が参考になります。
クエリ パラメーターを使用して応答をカスタマイズする – Microsoft Graph | Microsoft Docs
ここまでできたらフローを保存して、実際にグループが取得できるかテストしてみましょう。Status code が200になっていれば、期待通りにグループが取得できているはずです。
取得できていたら、Body の内容を丸ごとコピーしておきます。この後で取得結果を処理する際に使います。
取得したグループの情報を次の処理で利用する
これで名前をキーにしてグループを取得(検索)することができました。最後に、この取得結果を受け取ってオブジェクトIDを知る方法を紹介します。
[JSONの変換 (Parse JSON)] というアクションを使用すると、HTTPアクションの結果を受け取ることができます。
(アクションの追加でjson と入力すると見つかります)
アクションを追加したら、コンテンツ(Content) に先ほど取得したHTTPアクションの結果(Body)をセットします。
次のスキーマ(Schema) ですが、[Generate from sample] ボタンを押して、 先ほどコピーしておいたテスト結果のBody を貼り付けます。
するとスキーマ(Schema) の欄に、テスト結果のBody から抽出されたスキーマ定義がセットされます。
これで取得したグループ情報を取り出す準備ができました。あとは後続のアクションで使いたいグループ情報を参照します。
この記事の冒頭で書いたように、Power Automate でグループに対して何か処理を行いたい時に、このグループIDを指定しなければならないケースがありますが
このテクニックを使うことで、グループ名さえ分かればIDが取り出せるので、対応できるようになります。