Patch関数とは
データ ソース 内で 1 つ以上の レコード を変更または作成するか、データ ソースの外部でレコードをマージします。
公式より引用
構文
データソースやコレクションのレコードを作成する場合
第二引数で作成するレコードを指定({ID:Blank()}またはDefaults(データソース))し、第三引数で列とその値を指定します。
Patch(
データソースまたはコレクション,
作成するレコード,
{作成するレコードの列:列に設定する値}
)
データソースやコレクションのレコードを変更またする場合
第二引数で作成するレコードを指定(LookUp関数など)し、第三引数で変換する列とその値を指定します。
Patch(
データソースまたはコレクション,
変更するレコード,
{変更するレコードの列:変更後の値}
)
レコードを結合する場合]
使ったことがないです。Table関数でいいと思います。
Patch( レコード1, レコード2 [, …] )
レコード:最低2個以上の結合するレコード
使い方
以下のコレクションに対してPatch関数でレコードを作成・変更していきます。
データソースのレコードを作成する場合
ボタンを追加し、以下のコードを記入します。
Patch(テスト, LookUp(テスト, 人= "A"), { 人: "B" })
これでボタンを押すと”人”列がAさんである最初のレコードがBさんに変更されます。
UpdateIf関数と同じように指定していないレコードの値はそのままです。
データソースのレコードを変更する場合
コレクションの値は前項の最初のものと同じです。
このコレクションに以下のコードを記入したボタンを追加することで新しいレコードを作成します。
Patch(テスト, Defaults(テスト), { 人: "B" })
このようにDefaults関数を使用することでコレクションの規定値を追加することが出来ます。今回は規定値を設定していないので”人”列以外は空白が入力されました。
使用例
以下のように記述することで、条件によってデータソースに値を登録するか、値を変更するかを簡単でわかりやすく書くことができます。
Ifの条件式をデータソースにレコードが存在するかどうかにすれば増分更新にも使用できますね。
Patch(
[データソース],
If(
[新規登録の場合にtrueになるような条件],
Defaults([データソース]),
[更新するレコード]
),
//更新する値を以下の形式で入力
{列名1:"値1", 列名2:値2}
)
コントロールを増やしたくない場合はこちらの方法が有効ですが、データの新規作成・更新には編集フォームを使用した方が簡単です。
コメント