PowerApps|Patch関数で複数のレコードを一括更新する方法〜If, ForAll, Filter〜
PowerAppsでPatch関数を使うと、
レコードの更新を行うことができます。
レコードの更新の際には、複数レコードを一括更新したい場合などもあると思います。
今回は、Patch関数を用いて条件に合う複数レコードを一括更新する方法について紹介します。
一括更新ができるようになることで、更新したいデータを1つの操作(ボタンなど)で行えることができます。
楽になるので、最後まで一緒に見ていきましょう!
目次(クリックで読みたい部分にジャンプできます)
Patch関数で複数レコードを更新する全体像
Patch関数により、複数レコードを更新する場合には、
ForAll関数と組み合わせて使用することが多いです。
ForAll関数とは?
ForAll関数とは、
特定のテーブル型データ全てに対して、処理を繰り返すことができる関数です。
ForAll関数で繰り返し処理の中で、Patch関数を使用するというイメージになります。
【コード例】Patch関数による複数レコードの更新の概要
まずは、簡単なコード例を見てみてください。
ForAll関数により、対象のテーブル型データに対して、Patch関数が繰り返し実行されます。
ForAll(
テーブル型データ,
Patch(
テーブル型データ,
ThisRecord,
{ Status: "Active" }
)
)
上記では、テーブル型データの全てに対して
Statusを"Active"に変更しています。
【具体例①】条件に合うデータのみPatchで更新
また、全てのデータではなく、特定の条件にあったデータのみ更新したいという場合もあるかと思います。
例えば、以下の従業員の「名前」「部署」「ステータス」が格納してあるデータがあるとします。
「営業部門(Sales)のステータスのみ"Active"に変更したい」としましょう。
ForAll(
Filter(Employees, Department = "Sales"),
Patch(
Employees,
ThisRecord,
{ Status: "Active" }
)
)
このPatch関数を実行することによって、データは以下のようになります。
特定の条件などをFilter関数やif関数を使用することで、絞り込み更新していく流れです。
【具体例②】ギャラリー内の特定のデータを一括更新する
次にPowerAppsでデータを複数扱うのが、ギャラリーとの組み合わせではないでしょうか。
ただ、ギャラリーに表示してあるデータに対しても、
基本的に、ForAllとPatchを組み合わせて使うことには変わりありません。
ギャラリー内の情報を取得したい時には、「Gallery1.AllItems」を使用します。
ForAll(
Filter(Gallery1.AllItems, Department = "Sales"),
Patch(
Employees,
ThisRecord,
{ Status: "Active" }
)
)
先ほど紹介したコードとあえて同じにしています。
ギャラリーに表示されているデータは、Gallery1.AllItemsで取得しています。
このように、複数レコードを一括更新する時には、ForAllとセットで使うということを覚えておいてください!
そうすると、Patchもより使いやすくすることができますよ。
まとめ
今回は、Patch関数を使用して複数レコードを更新する方法について紹介しました。
では、より具体的に使用方法を知ることで、さらに具体的なイメージを掴むことができます。
以下の例では、ギャラリーに行番号をふる例です。
ギャラリーを使うと多くの方が表示したいと思うことがある場面です。
それらは、Patch, ForAllを使用しています。その方法を知るとより活用方法を広げることができるでしょう