LoginSignup
21
31

More than 5 years have passed since last update.

PowerAppsでユーザーを絞り込みたい

Last updated at Posted at 2019-02-16

お題

SharePoint リストに、コース (1行テキスト) ごとに受講者 (ユーザーまたはグループ) を登録して、これらの情報を基に新たな情報を登録する際、コース、受講者を手作業で入力するのは面倒くさい。コースをドロップダウンリストから選んだら、そのコースの受講者のみに絞り込むように入力フォームを作ります。
「ユーザーまたはグループ」列の絞り込みはカンタンにできるかと思いきや、この「ユーザーまたはグループ」型のクセが強く扱いづらいところもあり、数日間ずっとこれに悩みましたので、ここに残しておこう。

image.png

PowerApps で入力フォームを作成

SharePoint リストを開き、PowerApps > フォームのカスタマイズ をクリックします。

image.png

すると、PowerApps アプリの作成画面が開きます。

image.png

データソースを追加

データを絞り込むために必要な SharePoint リストを追加します。今回は「受講者」リストを追加します。
メニュー [ビュー] > [データソース] をクリックすると、現在接続されている SharePoint リストが載っています。
ここで、[データソースの追加] をクリックします。

image.png

接続のリストから「SharePoint」を選択します。

image.png

SharePoint サイトの URL を入力するか、「最近利用したサイト」から選ぶかで接続します。

image.png

SharePoint リストの一覧から必要なリストにチェックをつけて [接続] をクリックします。

image.png

選択した SharePoint リストが追加されました。

image.png

また、Office 365 ユーザーの操作を行うので、「Office 365 ユーザー」も追加します。

image.png

「タイトル」カードのカスタマイズ

まず「タイトル (コース)」列の絞り込みを実装します。
フォームのプロパティで「フィールドの編集」を開き、「タイトル」列のコントロールの種類を「許容値 (ドロップダウンリスト)」に変更します。

image.png

「タイトル」カードのプロパティでロック解除し、ドロップダウンリストの Items プロパティに「Distinct(受講者,タイトル)」と指定することで、「受講者」リストの「コース (タイトル列)」がドロップダウンリストの選択肢として載ります。

image.png

「生徒」カードのカスタマイズ

次にお題の「ユーザーの「絞り込み」を実装します。
「生徒」カードのプロパティでロック解除し、メニュー [挿入] > [コントロール] > [ドロップダウンリスト] をクリックして追加します。

image.png

先ほどの「タイトル」カードで選択した値で「生徒」を絞り込むようにするため、追加したドロップダウンリストの Items プロパティにその旨を表す式を入力します。

(ex.)properties.Items
Items = Distinct(Filter(受講者,タイトル=DataCardValue4.Selected.Value),生徒.DisplayName)

なお、ドロップダウンリストはテキスト値しか取り扱えないので、「表示名 (DisplayName)」を出力します。

image.png

あと、ドロップダウンリストのデフォルトに「このアイテム (成績表)」の「生徒 (ユーザーまたはグループ)」を載せたいので Default プロパティにセットします。お決まりの「Parent.Default」と書きたいところですが、型が合わないのでこのカードの Default プロパティの「表示名」をセットします。

(ex.)properties.Default
Default = ThisItem.生徒.DisplayName

image.png

そして、このドロップダウンリストで選択した値をもともとこのカードに搭載されていたコントロールに反映させるため、DefaultSelectedItems プロパティを以下のようにクレーム、表示名、メールアドレスをセットします。

(ex.)properties.DefaultSelectedItems
DefaultSelectedItems = {
  Claims:"i:0#.f|membership|" & Lower(First(Office365ユーザー.SearchUser({searchTerm: Dropdown1.Selected.Value})).UserPrincipalName),
  DisplayName:First(Office365ユーザー.SearchUser({searchTerm: Dropdown1.Selected.Value})).DisplayName,
  Email:First(Office365ユーザー.SearchUser({searchTerm: Dropdown1.Selected.Value})).Mail
}

image.png

動作確認

まず、コースを選択すると生徒が絞り込まれていることがわかります。

image.png

ドロップダウンリストでユーザーを選択すると、生徒カード (もともとあったコントロール) の値も変わっていることがわかります。

image.png

ひととおり確認できたので、生徒カードのもともとあったコントロールの上に追加したドロップダウンリストを重ねて公開しましょう。

image.png

21
31
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
31