目次
PowerApps Office 365のユーザを検索してリストボックスへ表示させる」
データソースを追加する
- ビュー → 【データソース】をクリックします
- 【データソースの追加】をクリックします
- 検索窓にOfficeと入力し、Office 365ユーザをクリックします。
- データソースとしてOffice 365ユーザが追加されたことを確認します
ユーザ検索用のテキストボックスを作成する
検索結果表示用のギャラリーを作成する
- [挿入] → [ギャラリー] → 【縦】をクリックします
- 追加されたギャラリーを選択し、Itemsに以下のように入力します
Office365ユーザー.SearchUser({searchTerm:txtSearchBox.Text,top:15})
画像にプロフィールアイコンを表示させよう
- ギャラリーからImage1を選択します
- Image計算式に以下のように入力します
Office365ユーザー.UserPhotoV2(ThisItem.UserPrincipalName)
- プロフィール画像が設定されているユーザのプロフィール画像が表示されます
表示名を表示させよう
- ギャラリーからTitle1を選択します
- Text計算式に以下のように入力します
ThisItem.DisplayName
テキストボックスに表示名が表示されたことを確認します
- 同様にUserPrincipalNameを表示させていきます
ギャラリーからSubtitle1を選択します
- Text計算式に以下のように入力します
ThisItem.UserPrincipalName
UserPrincipalNameが表示されたことを確認します
選択したユーザ名をテキストボックスに表示させよう
- [挿入]→[テキスト]→【テキスト入力】をクリックします
- 追加したテキストボックスを選択し、Default計算式に下記のように入力します
Gallery1.Selected.UserPrincipalName
- F5キーを押して実行します。
- 検索ボックスからユーザを検索し表示されたユーザをクリックすると選択したユーザのUserPrincipalNameがテキストボックスに表示されます
一度だけこのユーザの情報を利用するのであればこれで問題ないかもしれませんが、何かの書類用に複数人選択させて利用したい等がある場合にはこれでは適さないと思います。
ので、グループウェアによくある複数人選択を作成してみたいと思います。
こういうやつ↓(サイボウズさんのヘルプから拝借)
ユーザを追加するリストボックスを作成しよう
- 参加者欄に該当するリストボックスを挿入します
- [挿入]→[コントロール]→【リストボックス】をクリックします
- 次に[挿入]→【ボタン】をクリックします
- ボタンを2つ追加し、表示テキストを「ユーザ追加」と「クリア」に変更します
こんな感じになりますね
- Appを選択します
- OnStart計算式に以下のように入力します
Collect(userlist,Office365ユーザー.MyProfileV2())
- ユーザ追加としたほうのボタンを選択します
- OnSelectの計算式に以下のように入力します
If(Not(Gallery1.Selected.UserPrincipalName in userlist.UserPrincipalName), Collect(userlist, Gallery1.Selected))
- F5キーを押してユーザを検索し追加したいユーザの上でクリックした後に、【ユーザ追加】ボタンをクリックします
- 以下のようにリストボックスにユーザのUserPrincipalNameが表示されます
ユーザを削除できるようにしよう
twitterで教えていただきました。ありがとうございます!
わかったこと。
1.やっぱりPowerAppsはネストされたテーブルの処理が柔軟ではない
2.なので、選択対象のテーブルをあらかじめUnGroupする
3.リストボックスは複数選択肢なので In演算子を使う
添付で指定レコードの削除はできましたが、重複レコードができるのがちょっと行けてないですね。 pic.twitter.com/mZmltqn0xf— yus (@yus11981878) June 15, 2019
- [挿入]→【ボタン】をクリックしボタンを追加します
ボタンの表示名を「クリア」に変更します - OnSelect計算式に以下のように入力します
ClearCollect(userlist,Ungroup(userlist,”UserPrincipalName”));
RemoveIf(userlist,UserPrincipalName in ListBox2.SelectedItemsText.UserPrincipalName) - 複数名をリストボックスに追加します
- リストボックスに表示されたユーザを選択し、作成したクリアボタンをクリックします
- リストボックスから選択したユーザが削除されたことを確認します
全クリアをできるようにしよう
ボタン1つで選択した全ユーザをクリアできるようにします
- 上記と同じ手順でボタンを追加し、表示を「全クリア」としておきます
- ボタンを選択し、OnSelect計算式に以下のように入力します
Clear(userlist)
- ユーザ数人追加した状態で全クリアボタンを押しリストボックス内のデータがすべてクリアされたことを確認します
承認経路とかいろいろなことに利用できそうですね!