便利な関数|Power Apps【応用】

このページでは基本編で紹介できなかった便利な関数を紹介します。

With

With関数は一時変数を宣言する関数で、UpdateContext関数で宣言する変数より、短いスコープで使用可能な変数を宣言することができます。

以下の例では呼び出したPower Automateの戻り値を

// Power Automateからはbool型のプロパティ「result」を持つオブジェクトが戻ってくるものとする
With({ret:PowerAutomateフロー名.Run()},
    If(ret.result = true,
        Notify("フローは成功しました。"),
        Notify("フローは失敗しました。")
    )
)

Power Automateからの戻り値を画面全体で使用する場合はUpdateContext関数で宣言した変数に格納すべきですが、呼び出した直後のメッセージ表示にのみ使用するような場合は、スコープが短いWith関数を使う方が望ましいです。

Concurrent

Concurrent関数は引数として渡した複数の処理を、並列実行する関数です。

// 数式1 ~ 数式Nを並列で実行
Concurrent(数式1, 数式2, ...数式N)

以下の例ではApp.OnStartなどでグローバル変数の宣言を並列で行い。処理時間の短縮を図る例です。

Concurrent(
    Set(glbTextColor, Color.Red),
    Set(glbBackgroundColor, Color.Blue)
)

Concurrent関数はアプリのパフォーマンスが上がる関数なので、積極的に使用していきましょう。

※Power Appsを実行するデバイスによってはパフォーマンスが向上しないこともあります。

DateAdd / DateDiff

目次

DateAdd

DateAdd関数は、日付/時刻値に値を加える関数です。

戻り値として計算後の日付/時刻値を返します。

DateAdd( DateTime, Addition [, Units ] )
// DateTime : 加算対象の日付/時刻値
// Addtion : 加算する数値
// Units : 加算する数値の単位列挙値

加算する数値の単位列挙値には以下があります。

  • TimeUnit.Milliseconds
  • TimeUnit.Seconds
  • TimeUnit.Minutes
  • TimeUnit.Hours
  • TimeUnit.Days(指定しない場合はこの値)
  • TimeUnit.Months
  • TimeUnit.Quarters
  • TimeUnit.Years

以下使用例です。

// 明日の日付を求める式
DateAdd(Today(), 1, TimeUnit.Days)

// 現在の時刻から30分前を求める式
DateAdd(Now(), -30, TimeUnit.Minutes)

DateDiff

DateDiff関数は日付/時刻値の差分を取る関数です。

戻り値として第3引数で指定した単位の差分数値を返します。

DateDiff( StartDateTime, EndDateTime [, Units ] )
// StartDateTime:開始日時
// EndDateTime:終了日時
// Units:減算後の値の単位の列挙値

以下使用例です。

// 2000年1月1日から現在時刻までの経過した日数を返す
DateDiff( Now(), DateValue("1/1/2000"), TimeUnit.Days)

// 本日の0時0分より経過した時間を負の数値で返す( Now() > Today() )
DateDiff( Now(), Today(), TimeUnit.Minutes )

Launch、Param

Launch

Launch関数は引数で指定したURLのWebページ、またはキャンバスアプリを起動する関数です。

また、起動する際にパラメータを渡すこともでき、他のキャンバスアプリ起動時にパラメータを渡し、App.OnStartプロパティで起動画面を操作する、などの使い方をされます。

Launch( Address [, ParameterName1, ParameterValue1, ... ] )

// Address: 起動する Web ページのアドレスまたはアプリ ID。
// ParameterName(s):(任意)パラメーターとして渡す値の名称
// ParameterValue(s):(任意)パラメータとして渡す値

※パラメーターとして「LaunchTarget」を渡すこともできますが、あまり使用しません。(以下参照)

使い方

// bing検索ページを開きます
Launch( "https://bing.com" )

// パラメータ名「Navigate」に値「Second Screen」を設定し、他のキャンバスアプリを起動します
Launch( "/providers/Microsoft.PowerApps/apps/YOUR-APP-ID",{ Navigate: "Second Screen"})

Param

Param関数ははURLクエリパラメータで渡された値を取得する関数です。

Param( ParameterName )

// ParameterName : アプリに渡されたパラメーターの名前。

例えば以下の関数でキャンバスアプリが起動された際、

Launch( "/providers/Microsoft.PowerApps/apps/YOUR-APP-ID",{ Navigate: "Second Screen"})

Param関数をApp.StartScreenプロパティで以下のように使用することで、起動画面をホーム画面からScreen2に切り替えることができます。

If(Param("Navigate") = "Second Screen", Screen2, HomeScreen)

CountRows

CountRows関数はテーブル型の値やデータソースの行数を取得できる関数です。

CountRows( Table )

// 行数を取得するテーブル

ただし、CountRowsは委任が機能しないため、データソースに使用する場合は注意が必要です。

プレビューの機能として委任を機能させる設定はありますが、その際もいくつか制限があるため、データソースに対してCountRows関数を使用する場合は、以下の内容を理解した上で使用することをおすすめします。

AddColumns / DropColumns / ShowColumns / RenameColumns

Power Appsではテーブル型の値やデータソースを扱うことが多く、必要に応じこれらの関数を使用してテーブルの形を整形し、アプリ上でテーブルを表示/操作します。

AddColumns

AddColumns関数はテーブル型の値に列を追加する関数です。

AddColumns( Table, ColumnName1, Formula1 [, ColumnName2, Formula2, ... ] )

// Table : 操作の対象となるテーブル
// ColumnName(s) : 追加する列の名前
// Formula(s) : 各レコードについて評価する数式

DropColumns

DropColumns関数はテーブル型の値の指定の列を削除する関数です。

DropColumns( Table, ColumnName1 [, ColumnName2, ... ] )

// Table : 操作の対象となるテーブル
// ColumnName(s) : 削除する列の名前

ShowColumns

ShowColumns関数は指定した列以外の列を削除する関数です。

ShowColumns( Table, ColumnName1 [, ColumnName2, ... ] )

// Table : 操作の対象となるテーブル
// ColumnName(s) : 表示する(削除しない)列の名前

RenameColumns

RenameColumns( Table, OldColumnName1, NewColumnName1 [, OldColumnName2, NewColumnName2, ... ] )

// Table : 操作の対象となるテーブル
// OldColumnName : 変更前の列名
// NewColumnName : 変更後の列名 

各関数の使用例

AddColumnsの使用例

DropColumnsの使用例

ShowColumnsの使用例

RenameColumnsの使用例

Patch

Patch関数はデータソースのレコードを追加/更新する際に使用する関数です。

Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])

// DataSource :追加/更新するレコードのデータのソース
// BaseRecord : 更新するレコード。追加の場合はDefaults関数を使用
// ChangeRecord(s) : 追加/更新するレコードのプロパティと値を指定

フォームを使用せずにレコードの追加や更新ができるため、

  • ユーザーの入力以外からデータソースのレコードを追加/更新する際
  • フォームコントロールではデザイナーから指定された画面デザインに対応できない場合

などに使用します。

使用例

// 列「Flavor」が「Chocolate」のレコードの列「Quantity」を「400」に更新する
Patch( IceCream,LookUp( IceCream, Flavor = "Chocolate" ), { Quantity: 400 } )

// 列「Flavor」が「Strawberry」、列「Quantity」が「100」のレコードを追加する
Patch( IceCream, Defaults( IceCream ), { Flavor: "Strawberry", Quantity: 100 } )

レコードの一括登録

Patch関数を使用すると、複数のレコードを一括で登録することも可能です。

詳細は以下の参考サイトをご参照ください。

Remove / RemoveIf

Remove

Remove関数はデータソースまたはコレクションのレコードを削除する関数です。

削除対象としてレコードを複数、またはテーブルとして一括で指定することが可能です。

// 削除対象を複数渡す
Remove( DataSource, Record1 [, Record2, ... ] [, RemoveFlags.All ] )

// DataSource : 削除対象のデータソースまたはコレクション
// Record(s) : 削除するレコード
// RemoveFlags.All : (任意)同じレコードが複数存在した際に、それらをすべて削除する場合はRemoveFlags.Allを指定する

// 削除対象をテーブルで渡す
Remove( DataSource, Table [, RemoveFlags.All ] )

// DataSource : 削除対象のデータソースまたはコレクション
// Table : 削除するレコードが1つ以上含まれたテーブル
// RemoveFlags.All : (任意)同じレコードが複数存在した際に、それらをすべて削除する場合はRemoveFlags.Allを指定する

RemoveIf

RemoveIf関数はデータソースまたはコレクションのレコードのうち、条件に合致するレコードを削除する関数です。

RemoveIf( DataSource, Condition [, ... ] )

// DataSource : 削除対象のデータソースまたはコレクション
// Condition(s) : 削除条件

RemoveIfは現在委任機能の対象外です。

RemoveIfを使用してデータソースのレコードを削除する場合は、委任ができないことを踏まえた上で構築するようにしてください。

※プレビューの機能として委任機能の対象にする設定は用意されています。

使用例

Remove関数とRemoveIf関数の使用例は公式ページの例がとてもわかりやすいので、そちらをご参照ください。

>>RemoveおよびRemoveif関数

Update / UpdateIf

Update

Update関数はデータソースまたはコレクションのレコードを更新する際に使用する関数です。

Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

// DataSource : 置換対象のデータソースまたはコレクション
// OldRecord : 置換するレコード
// NewRecord : 置換後のレコード
// RemoveFlags.All : (任意)(任意)同じレコードが複数存在した際に、それらをすべて置換する場合はRemoveFlags.Allを指定する

Patch関数ではレコードの指定したプロパティのみを更新しますが、Update関数では指定したレコードのすべてのプロパティを更新しようとします(プロパティ指定をしない場合は空白が入る)。

UpdateIf

UpdateIf関数はデータソースまたはコレクションのレコードのうち、条件に合致したレコードを更新する際に使用する関数です。

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

// DataSource : 置換対象のデータソースまたはコレクション
// Condition(s) : 置換条件
// ChangeRecord(s) : 置換後のレコード

UpdateIf関数はUpdate関数と違い、条件に合致したレコードのうち、指定したプロパティのみを更新します。

また、UpdateIf関数はRemoveIf関数と同様に委任機能の対象外です。

データソースと共にこの関数を使用する場合は、委任が適用されないことを踏まえた上で構築してください。

※プレビューの機能として委任機能の対象にする設定は用意されています。

使用例

Update関数、UpdateIf関数の使用例は、公式のHPが最もわかりやすいので、そちらを参照してください。

関数リファレンス

これまで紹介した関数以外にも便利な関数はたくさんありますので、以下のリファレンスを元にPower Appsの関数を把握していただければと思います。

>>数式のリファレンス-キャンバスアプリ

  • URLをコピーしました!

お役立ち資料



資料請求はこちら

資料請求

無料デモアプリはこちら

無料で作成依頼
目次