Power Apps でAzure ADやOffice 365 ユーザを検索したいケースがあると思います。
例えば、ワークフローで承認先に対してPower Automateで送信するときに、メールアドレスをベタ打ちするのではなく、ドロップダウンリストから選択したいとか、です。
そういったことができるように、Power Apps のキャンバスアプリからOffice 365 ユーザの情報にアクセスできるような機能をご紹介しようと思います。
目次
ギャラリーを使った Office 365ユーザの検索
ギャラリーを追加して、データソースにOffice 365ユーザコネクタを使ってディレクトリ情報を扱えるようにします。
画面としては以下のように作成してみました。以下は例です。
データソースは以下のように接続します。
office 365 ユーザーで検索すれば現れると思います。
接続が初回の場合、ユーザ管理者権限を持つユーザでの承認が必要です。
ギャラリーのデータソースに先ほどのOffice 365 ユーザを指定します。
検索用にテキスト入力を追加します。
オブジェクトの名前は SearchTextBoxとしておきます。
ギャラリーの Items は、以下のように設定します。
Office365ユーザー.SearchUser(
{searchTerm:SearchTextBox.Text,
top:15
}
)
- SearchUser メソッドで、登録されているOffice 365ユーザの中から、条件を指定して検索ができます。
- searchTerm は、検索条件の一つで検索語です。ここではテキストボックス(SearchTextBox)に記入された値で検索するようにしています。
- top は、検索条件の一つで、検索上位何件を表示するかを指定することができます。
ギャラリーに表示されたユーザを選択して活用する
ギャラリーで表示されている「>」アイコンを選択することで、該当のレコードを利用する仕組みを考えます。
今回は簡単に例として隣に必要な情報をラベルで表示するケースを紹介します。
「>」アイコンのOnSelect プロパティには、以下のように設定します。
Set(SelectedRecord,ThisItem)
- SelectedRecord は、ここで初めて宣言する変数名です。
- ThisItem は、ギャラリーのこのアイコンが属しているレコードです。
- Set はグローバル変数です。
このアイコンをクリックする事で、ここで宣言された変数にレコードが格納されます。
アイコンをクリックすると変数はレコード型で持ってくれるので、「変数名.プロパティ」で各プロパティを利用することができるようになります。
それでは定義した変数を利用して、各プロパティの値を表示してみようと思います。
3つラベルを挿入して、それぞれTextプロパティに以下のように設定します。
SelectedRecord.DisplayName
SelectedRecord.Id
SelectedRecord.UserPrincipalName
テキストとしての表示だけですが、データを取得して利用することができました。
ドロップダウンリスト Office 365ユーザの選択
次はドロップダウンリストでの表示を行ってみようと思います。
ドロップダウンリスト形式の良いところは、省スペースで表示ができるところです。
ただし、レコードごとに表示できる情報が限定的ですので、選択されたレコードの情報を補完する仕組みをも考慮することが必要だと思います。
検索用のテキスト入力を配置する
まずは SearchTextInputという名称でテキスト入力を配置します。
ドロップダウンリストを作成する
ドロップダウンリスト Dropdownを作成します。Items プロパティには以下のように設定して、先ほどのSearchTextInputからの検索語を受け取ってフィルターできるようにします。
Office365ユーザー.SearchUser(
{searchTerm:SearchTextInput.Text,
top:10
}
)
top の数はパフォーマンスを見ながら調整するとよいでしょう。
補足情報を表示するラベルを挿入する
ドロップダウンリストでは表示される情報が少ないので、そのユーザで間違い中わかるような情報をラベルをドロップダウンリストの下に配置してわかるようにしています。
下の図で、supervisorというユーザ名は以下の関数をText プロパティに設定することで表示できます。
Dropdown.Selected.DisplayName
ID情報は以下のように設定します。
Dropdown.Selected.Id
以上参考になりましたら幸いです。