💻

Power Apps の Office365Users.RelevantPeople 関数が結果を 10 件しか結果を返してくれない

2022/01/01に公開

はじめに

Power Apps の Office 365 ユーザー コネクタにはユーザーに関連する人物をサジェストしてくれる RelevantPeople という関数があります。

https://docs.microsoft.com/en-us/connectors/office365users/?WT.mc_id=M365-MVP-5002941#get-relevant-people

しかしこの関数ですが、結果を 10 件しか返してくれません。

その理由は、RelevantPeople 関数は Microsoft Graph の People API を呼び出しており、その既定値が 10 件しか値を返さないことによります。Microsoft Graph を直接呼び出すのであれば、OData クエリの $top を指定することによって結果の件数を変更することができるのですが、Office 365 ユーザー コネクタではその手段が提供されていません。よって 10 件以上の結果を取りたい場合はカスタム コネクタで Microsoft Graph を呼び出すことになります。

カスタム コネクタの作成についてはすでに素晴らしい記事が存在します。今回はこちらを参考にしながら手順を追っていきたいと思います。

https://idea.tostring.jp/?p=3947

実行方法

アプリケーションの登録

まずは 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 を指定できるようにしてあげれば、結果として返ってくるユーザーからグループを除外したり、組織内のユーザーに限定したりすることが可能となります。

脚注
  1. キャプチャは 100 を指定したのに 50 件しか取ってこれていませんがもともと 50 件しかないだけです。 ↩︎

Discussion