だい³の備忘録

dai³が Power Platform を中心に色々とアウトプットするブログです

【Power Apps】俺専用チートシート(随時更新)

だい³が今まで使ってきた関数を整理する場所としていったん書き溜めていくところです。
随時更新予定。

変数

グローバル変数
アプリ内のすべてのスクリーンで使用できる変数

Set(変数名,値);

例)Set(gblFilterTrainingMonths,1) ・・・gblFilterTrainingMonths に 1を設定する

コンテキスト変数
そのスクリーンのみで使用できる変数。
別のスクリーンに移動すると変数は使えない

UpdateContext({変数名: 値});

コレクション

ソート

Sort 関数
データソースを任意の並び順にするために必須となる関数。
SharePointをデータソースにする場合は委任問題に注意。
昇順の場合は Ascending 、降順の場合は Descending を指定する。

Sort(
  データソース,
  ソート対象の列,
  昇順か降順の指定
);

フィルタ

Search 関数
任意の文字列で、列を指定して、前方後方一致で一致するものをフィルタしてくれる。
複数の列の指定ができるため、フリーワード検索のような使い方できる。
Power Apps の関数の中でも好きな部類に入る。
以下の、「検索するテキスト」にテキストボックスのテキストを指定すれば出来上がり。
「検索するテキスト」が空っぽ(Null)の場合はフィルタなしでデータソースを引っ張ってきてくれるのでとても便利。

検索する列を指定する場合、内部名となるため注意。
特に、SharePoint等は日本語で列を作っちゃうとエンコードされた内部名になるので後から調べるのが大変(;´Д`)

Search(
  データソース,
  検索するテキスト,
  検索する列1,
  検索する列2,
  検索する列3,
  検索する列N
);

並列処理

Concurrent 関数
Concurrent 内に複数処理を記述することで、同時に処理を開始することができる。OnVisible など、できるだけ処理時間を短くしたい場合や、複数処理がシーケンスでない(並列処理可能な)場合に有効な関数となる。

Concurrent(
  処理1,
  処理2,
  処理N
);

条件分岐

比較対象が空白かどうかで分岐

If(
  IsBlank(
   検査対象
   ),
  空白のとき,
  空白でないとき
);

ギャラリー

選択しているアイテムの色を変える
プロパティ:TemplateFill

If(ThisItem.IsSelected,Color.LightBlue,Color.White);

f:id:daisan3:20201026232409p:plain
※選択していたら"LightBlue" 未選択は"White"

日付処理

今日の日付をYYMMで表現

Text( Today(), "[$-ja]yymm" );

今日の日付をYYMMDDで表現

Text( Today(), "[$-ja]yymmdd" );

今日から1ヵ月後を計算

DateAdd (Today(), 1, Months );

今日から-1ヵ月後を計算

DateAdd (Today(), -1, Months );

今日から-1ヵ月後を計算してYYMMで表現

Text( DateAdd (Today(), -1, Months ), "[$-ja]yymm" );

日付のタイムスタンプを作成

Text( Now(), "[$-ja]yymmddhhmmss" );

日付に対しての曜日表示

Text(Now(), "[$-ja-JP] m/dd(dddd)", "ja-JP" );

※ 参考にしました
qiita.com

日付に対しての曜日表示(”曜日”を削除)

Substitute(Text(ThisItem.作成日,"[$-ja]yy/mm/dd hh:mm(dddd)" ),"曜日","");

ロード中画面

*吉田さんの動画を内容を参考にしました

下準備としてロード中画面を準備する。
Google画像検索で 「Loader gif」とやるといい感じの画像が検索できる
著作権には注意してネ。Free GIF画像を準備しましょう。
www.google.com

GIFをアップロードする
f:id:daisan3:20201101181327p:plain

Loder用のGIFやテキストを配置する
f:id:daisan3:20201101181607p:plain

Visible プロパティに [showLoader] を設定
f:id:daisan3:20201101181827p:plain

ボタン等の処理で、[showLoader] の値を true や false に変化させて、Visible プロパティを変数で制御。これで、ロード画面を表示したり、させなかったりできる。

ロード画面を表示させる場合

UpdateContext({showLoader,false});

ロード画面を非表示にする場合

UpdateContext({showLoader,ture});

コンポーネント

動的なタイトル変更
コンポーネントで動的なタイトル表示を行う場合、変数を受け取る準備(カスタムプロパティ)を行わなければいけない。
docs.microsoft.com

変数を受け取りたいコンポーネントを選択する
f:id:daisan3:20201227124954p:plain

「+新しいカスタム プロパティ」を選択する
f:id:daisan3:20201227125200p:plain

任意の値を入力する
今回はヘッダーに値を入れたいので、プロパティの型は「入力」にする。
また、受け取ったテキストデータを表示したいため、データ型は「テキスト」にする。
f:id:daisan3:20201227125801p:plain

コンポーネントに作成したカスタムプロパティ定義されているので、埋め込みたい変数を指定する。
f:id:daisan3:20201227130730p:plain

埋め込みたいラベルのテキストプロパティに、設定したカスタムプロパティを記述する。
hedder.HeaderText (コンポーネント名).(定義したカスタムプロパティ名)
f:id:daisan3:20201227130152p:plain

あとは画面側で変数にテキストをSetしちゃえば、そのテキストがヘッダーに出てくる。
f:id:daisan3:20201227130913p:plain

f:id:daisan3:20201227131011p:plain

画面のOnVisibleに以下のようなSetコマンドを入れれば、画面名が自動的にヘッダーに出ることになる。
f:id:daisan3:20201227131120p:plain

我が家で流れた再生された音楽