LoginSignup
1
3

Power AppsのVisibleプロパティを使って、入力内容に応じて入力項目の表示・非表示を切り替える

Posted at

◇はじめに

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()関数で判定できます。

◇おわりに

使い慣れている人からすれば調べるまでもない内容かと思いますが、自分の備忘録も兼ねて記事にしてみました。
どなたかの参考になれば幸いです。

🔚

1
3
0

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
1
3