◇はじめに
Microsoft Power Appsを使ってアプリをつくる際に、入力フォーム画面の項目の表示を動的に変えたい場面があります。(例を挙げると、アンケートのフォームで「その他」を選択した場合のみ、テキスト入力画面を表示するなど)
そこで、今回はVisibleプロパティを使った入力項目の切り替えを主要なタイプについて備忘録としてまとめました。
◇開発環境等
- OS:
- Windows 11 Home(Ver:22H2)
- 契約ライセンス:
- Microsoft 365 Business Basic
- 使用ツール:
- Power Apps
- SharePointリスト
◇試したデータ型
今回は、以下のデータタイプについてまとめました。
SharePointリストで列を追加するときのタイプ名で記載していますが、括弧内はPower Appsでのデータ型になります。
- テキスト(テキスト)
- 選択肢(複合)
- 日付と時刻(日時)
- ユーザー(複合)
- 数値(数値)
- はい/いいえ(ブール値)
◇事前準備
SharePointリストの作成
まず、それぞれのデータタイプを列に追加したSharePointリストを作成し、そのリストをベースにテスト用のPower Appsのアプリをつくっていきます。
- テーブル名
- SampleList
- 列名
- タイトル
- Text:テキスト
- Choice:選択肢
- Datetime:日付と時刻
- User:ユーザー
- NumericalValue:数値
- OnOff:はい/いいえ
- PopupWindow:複数行テキスト
最終列のPopupWindowが表示・非表示を切り替えるための項目となります。
サンプルデータを2行分入力していますが、実際にはこのデータは使いませんでした。
キャンバスアプリの作成&SharePointリストとのデータソース接続
以下の手順で、テスト用のPower Apps画面をつくっていきます。
- Power Appsのメニュー上から、「作成」-「空のアプリ」をクリック
- 「空のキャンバスアプリ」の作成をクリック
- アプリ名と形式を選んで作成ボタンをクリック(今回は電話形式にしています)
- スクリーン上に「挿入」-「編集フォーム」でフォームを追加
- 挿入したフォームを選択し、「プロパティ」-「データソース」から、先ほど作成したSharePointリストを接続
- 「フィールドの編集」を選択し、タイトルフィールドを削除(今回は特に使用しないため)
ここまでの作業で、各入力項目が表示された画面が作成できます。
◇各データ型の場合のPower Fxの実装
データ型:テキスト
Visible条件
Textの項目(今回はDataCardValue9
)の内容が"detail"
の場合、PopupWindowの項目を表示
Power Fx
Visible =
If(DataCardValue9.Text="detail",true,false)
テキスト型の場合はそのまま***.Text
を指定すれば値の取得ができます。
データ型:選択肢
Visible条件
選択肢(今回はDataCardValue10
)の選択が"fuga"
の場合、PopupWindowの項目を表示
Power Fx
Visible =
If(DataCardValue10.Selected.Value="fuga",true,false)
選択肢型の場合、現在選択されている選択肢を取得する場合、DataCardValue**
の後ろにSelected
を付ける必要があります。
なお、今回は選択肢の複数選択を不可にしているためこの方法で上手くいきましたが、複数選択可にした場合は未検証です(たぶんSelectedItems
プロパティあたりを使う必要がある?)
データ型:日付と時刻
Visible条件
入力した日付(今回はDateValue2
)が今日の日付より前の日付の場合、PopupWindowの項目を表示
Power Fx
Visible =
If(DateValue2.SelectedDate<Today(),true,false)
補足
今回の実験は2023/9/20に実施してます
日付と時刻型の場合、SelectedDate
というプロパティで日付の情報を取得することが可能です。
データ型:ユーザー
Visible条件
選択されたユーザー(今回はDataCardValue11
)の名称が特定の名前の場合、PopupWindowの項目を表示
※本名のアカウント名のため、名前の部分は伏せてます
Power Fx
Visible =
If(DataCardValue11.Selected.DisplayName="*******",true,false)
ユーザー型の場合も値の取り方は選択肢型と同様、Selected
プロパティが必要になります。
ただし、ユーザー名で取得する場合はその後にDisplayName
プロパティを使用します。
データ型:数値
Visible条件
入力された値(今回はDataCardValue12
)の値が100を超える場合、PopupWindowの項目を表示
Power Fx
Visible =
If(Value(DataCardValue12.Text)>100,true,false)
数値型の場合、テキスト型と同様に***.Text
を指定すれば値の取得ができますが、このままだと数値データとして扱えないため、取得したテキストデータに対してValue()
関数で括っています。
データ型:はい/いいえ
Visible条件
ON(今回はDataCardValue13
)の場合、PopupWindowの項目を表示
Power Fx
Visible =
If(DataCardValue13.Value,true,false)
はい/いいえ型の場合、***.Value
プロパティで値の取得ができます。
取得結果がそのままtrue or falseとなるため、そのままIf()
関数で判定できます。
◇おわりに
使い慣れている人からすれば調べるまでもない内容かと思いますが、自分の備忘録も兼ねて記事にしてみました。
どなたかの参考になれば幸いです。