Microsoft Graph API の Beta として、組織内の Microsoft Teams のチーム一覧を取得する API があるので、これを利用すると Microsoft Flow を使って日次などでチームの棚卸ができるかなと思いました。

List all teams in Microsoft Teams for an organization
https://docs.microsoft.com/ja-jp/graph/teams-list-all-teams

加えて、カスタム コネクタとして作成しておけば、他の人も簡単に使えるようになるのかなということで、Microsoft Flow から Microsoft Graph API を利用するカスタム コネクタの作成手順を確認してみましたのでメモしておきます。

この記事で作成するカスタム コネクタは「Microsoft Graph API を利用して組織内の Microsoft Teams のすべてのチームを取得する」アクションを持つカスタム コネクタです。

Azure Active Diretory へアプリを登録

まずは、Azure Active Directory へアプリを登録します。Azure 管理ポータルから Azure Active Directory を開き、[アプリの登録]-[新しいアプリケーションの登録] とクリックします。

設定値はつぎのような感じです。

項目 設定
名前 Flow Graph Connector
アプリケーションの種類 Web アプリ/API
サインオン URL https://login.windows.net

作成したらまずは目的に応じた権限を設定します。[設定]-[必要なアクセス許可] を開き、カスタム コネクタから利用する Microsoft Graph API に応じた権限を設定しておきます。今回の場合では、Microsoft Graph API の「委任されたアクセス許可」で「Read and write all groups」があれば良さそうです。追加したら [アクセス許可の付与] をクリックしておきます。

アプリの登録が終わったら、「アプリケーション ID」と「シークレット」を記録しておきます。シークレットは、登録したアプリの [設定]-[キー] をクリックしてパスワードを作成すると表示される値です。

あとで再びこのアプリの設定に戻ってくるので、開いたままにしておきましょう。

カスタム コネクタの作成

Microsoft Flow を開き、左側のメニューから [データ]-[カスタム コネクタ] を開きます。そうしたら右上の [カスタム コネクタの作成] から [一から作成] を選択します。

「カスタム コネクタ名」は、作成するコネクタに応じて分かりやすい名前を付けてください。ただし、名前は 30 文字までのようですね。

全般

「1. 全般」の設定では、コネクタのアイコンなどの他に「スキーマ」と「ホスト」を設定します。

項目 設定
スキーマ HTTPS
ホスト graph.microsoft.com

ここはこれだけですね。

セキュリティ

「2. セキュリティ」の設定では、「認証タイプ」として「OAuth 2.0」を選択し、つぎのように設定します。

項目 設定
ID プロバイダー Azure Ative Directory
Client id Azure AD に登録したアプリのアプリケーション ID
Client securet Azure AD に登録したアプリのシークレット
Resource URL https://graph.microsoft.com
スコープ https://graph.microsoft.com/.default

この他は既定のままです。

ここまで設定を埋めたら [コネクタの作成] をクリックします。作成が終わると「リダイレクト URL」が発行されるので、これをコピーしておきます。

一旦 Microsoft Flow の設定を離れますが、またすぐに戻ってくるので画面はそのままで。

Azure AD のアプリに応答 URL を設定

カスタム コネクタから発行された「リダイレクト URL」を Azure AD に登録したアプリに設定します。Azure 管理ポータルに戻り、Azure AD に登録したアプリの [設定]-[応答 URL] を開き、先ほどの「リダイレクト URL」を追加し [保存] をクリックします。

認証の動作確認

ここまでくると、カスタム コネクタから Azure AD のアプリに接続できるようになっているので、「4. テスト」を開き、[新しい接続] をクリックして接続を作成してみます。

ここで上手く接続が作成できない場合は、何か手順が足りていないのだと思います。

定義

認証まわりの動作確認が終わったら、「3. 定義」に戻り「アクション」や「トリガー」を作成します。

今回は「アクション」を作りますので [新しいアクション] をクリックします。「概要」「説明」「操作 ID」は、分かりやすいものを入力してください。

つぎの「要求」のセクションでは、[サンプルからのインポート] をクリックし、カスタム コネクタから呼び出したい Microsoft Graph API を設定します。

たとえば今回の場合は、テナント内のすべての Microsoft Teams のチームを取得するということなので、Microsoft Graph API のリファレンスを見ながらつぎのように設定します。

項目 設定
動詞 GET
URL https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq ‘Team’)

入力が終わったら [インポート] をクリックすることで、要求が自動的に設定されます。

また、今回の場合では、$filter クエリの値は固定値ですので、自動作成された要求の「クエリ」に追加されている「$filter」を編集し、「既定値」に「resourceProvisioningOptions/Any(x:x eq ‘Team’)」を指定し「表示」を「internal」に変えておきます。

これで [コネクタの更新] をクリックすると、カスタム コネクタのアクションが作成できました。

テスト

ここまで来たらカスタム コネクタから Microsoft Graph API を呼べるようになっているはずなので、「4. テスト」でテストを行います。上手くいけば応答が返ってきます。ここで失敗する場合は、Azure AD のアプリの権限設定が間違っている場合が多いかと思います。

つぎが最後の手順になりますが、テストで返ってきた「ボディ」をコネクタ出力の「動的コンテンツ」として簡単に利用できるように設定を行います。「動的コンテンツ」を利用できるのが Microsoft Flow の良いところですからね。というわけで、テストで取得できた応答の「ボディ」をコピーしておきます。

動的コンテンツの設定

またまた「3. 定義」に戻り、先ほど作成したアクションの「応答」セクションにある「default」をクリックします。そこで [サンプルからのインポート] をクリックし、テストで取得した応答の「ボディ」を貼り付けて [インポート] します。

これで設定が終了です。忘れずに [コネクタの更新] を行っておきましょう。忘れてしまうと、苦労して行った設定が水の泡です。

フローで利用する

これまで苦労して作成してきたカスタム コネクタをフローで利用してみます。アクションを追加するところの「カスタム」タブから追加することができます。

このコネクタを利用してフローを作成します。

たとえば、今回のカスタム コネクタのアクションは、組織内のすべてのチームの一覧を取得するものなので、得られた結果をメールで送ると…、つぎのようなメールが届くというわけです。

やっとできました。

さいごに

Microsoft Flow から Microsoft Graph API を利用するには HTTP アクションを利用する方法もありますが、繰り返し使うものであればカスタム コネクタとして用意しておいても良いかもしれません。また、カスタム コネクタは他のユーザーとも共有ができますので、誰かが作ったカスタム コネクタを複数人で利用することもできます。

カスタム コネクタを作成することで簡単に(?)Microsoft Graph API をフローで利用できるようになるというお話でした。んまあ、手順が分かってしまえば簡単ですかね。