Power Apps の Office365Users.RelevantPeople 関数が結果を 10 件しか結果を返してくれない
はじめに
Power Apps の Office 365 ユーザー コネクタにはユーザーに関連する人物をサジェストしてくれる RelevantPeople
という関数があります。
しかしこの関数ですが、結果を 10 件しか返してくれません。
その理由は、RelevantPeople
関数は Microsoft Graph の People API を呼び出しており、その既定値が 10 件しか値を返さないことによります。Microsoft Graph を直接呼び出すのであれば、OData クエリの $top
を指定することによって結果の件数を変更することができるのですが、Office 365 ユーザー コネクタではその手段が提供されていません。よって 10 件以上の結果を取りたい場合はカスタム コネクタで Microsoft Graph を呼び出すことになります。
カスタム コネクタの作成についてはすでに素晴らしい記事が存在します。今回はこちらを参考にしながら手順を追っていきたいと思います。
実行手順
アプリケーションの登録
まずは Azure ポータルから Azure AD にアプリケーションを登録します。
証明書とシークレット
から新しいクライアント シークレットを取得します。
API のアクセス許可 で People.Read を追加します。
これで準備は完了です。
カスタム コネクタの作成
全般
以下の通りに設定します。
項目 | 値 |
---|---|
スキーマ | HTTPS |
ホスト | graph.microsoft.com |
ベース URL | / |
セキュリティ
認証タイプには OAuth を指定します。
項目 | 値 |
---|---|
ID プロバイダー | Azure Active Directory |
Client ID | {{client-id}} |
Client Secret | {{client-secret}} |
Login URL | https://login.windows.net |
Tenant ID | {{tenant-id}} |
Resource URL | https://graph.microsoft.com |
スコープ | https://graph.microsoft.com/.default |
定義
要求の サンプルからインポート より以下のように入力します。
項目 | 値 |
---|---|
動詞 | GET |
URL | https://graph.microsoft.com/v1.0/me/people?$top=100 |
応答は Graph Explorer を使って https://graph.microsoft.com/v1.0/me/people
を叩いてみて (ログインする必要はありません) その結果の JSON を サンプルからインポート で登録すればよいでしょう。
ここまでできたらいったんカスタム コネクタを保存します。
リダイレクト URL の登録
Azure ポータルに戻り、カスタム コネクタの セキュリティ に表示されているリダイレクト URL をアプリケーションに登録します。
これでカスタム コネクタの設定は完了です。念のため接続を作成してテストを実行し結果が返ってくることを確認するといいでしょう。
実行結果
カスタム コネクタを実行してみます。$top
を指定することができるようになっており、10 件以上結果が返ってくるのがわかります。[1] この方法を使って、$filter
を指定できるようにしてあげれば、結果として返ってくるユーザーからグループを除外したり、組織内のユーザーに限定したりすることが可能となります。
-
キャプチャは 100 を指定したのに 50 件しか取ってこれていませんがもともと 50 件しかないだけです。 ↩︎
Discussion