Power Apps 押さえておきたいデータ操作系関数まとめ
Power Apps でデータソースに対してレコードの登録や更新、削除、フィルタリングなどを行うときに使用する関数について、改めてまとめてみようと思います。
この記事では、以下の関数について書いていきます。
・Patch()
・Remove()
・Filter()
・LookUp()
これ以外にもデータ操作を行える関数はありますが、すべてをまとめると混乱の元になりそうなので、今回は個人的に押さえておいたほうがいいだろうと思うもののみにしています。
最後にうまくいかない場合のQAがありますので、できないときはそちらも参考にしてみてください。
Patch()・・・レコードの登録や更新をするときに!
Patch()関数を使用するとレコードの登録や更新を行うことができます。
基本的に Power Apps でのレコード操作はフォームコントロールを使用して行いますが、Patch()関数を使用するとより柔軟なアプローチでアプリを構成することができます。
少しとっつきにくいですが、慣れれば問題なく扱えるようになると思います。そういう意味ではガチ初心者向けの関数ではない気もしています。まずはフォームコントロールを使用したアプリから始めて、データに慣れてきたら以下を参考に柔軟なデータ操作を行うアプリを作ってみましょう。
レコードを新規登録する方法
Patch(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
Defaults([データソース]), // 第二引数。Defaults()の引数の中には第一引数と同じデータソースを指定します。
{
ID:"1", // 複数フィールドを含める場合は , で区切ります。
Name:"Makoto Maeda",
Number:1
} // 第三引数。{ フィールド名:値 }の形式でレコードの値を入れていきます。すべてのフィールドを含める必要はありませんが、必須フィールドは忘れずに含めましょう。
)
レコードを更新する方法
Patch(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
Gallery1.Selected, // 第二引数。更新したいレコードを指定します。指定には主に Gallery.Selected や ThisItem、 LookUp() などを使用します。
{
ID:"1", // 複数フィールドを含める場合は , で区切ります。
Name:"Makoto Maeda",
Number:1
} // 第三引数。{ フィールド名:値 }の形式でレコードの値を入れていきます。更新するフィールドのみ含めればOKです。
)
Patch()関数を応用するとどういったことができるか?
フォームコントロールでは実現出来ないような事、例えば以下のようなことができます。
・Galleryのリスト上から直接1クリックでレコードを更新する(たとえばBOOL値のトグルなど)
・複数のレコードをまとめて登録、更新する(これにはForAll()を併用します。)
・フォームコントロールに縛られない自由なUIで入力フォームを構築する
・ユーザーに意識させずにバックグラウンドでレコードを登録する
Remove()・・・レコードを削除するときに!
Remove()関数を使用するとレコードを削除することができます。
レコードまたはコレクションを指定して、レコード1件または全件を削除対象とすることができます。
1件のレコードを削除する方法
Remove(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
Gallery1.Selected // 第二引数。削除したいレコードを指定します。指定には主に Gallery.Selected や ThisItem、 LookUp() などを使用します。
)
複数のレコードを削除する方法
Remove(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
colItems, // 第二引数。削除したいコレクションを指定します。指定には主に Filter() や Collection変数 などを使用します。
All // 第三引数。All と指定するとコレクション内のレコードを全件削除することができます。
)
Filter()・・・レコードを複数件取得したいときに!
Filter()関数を使用するとレコードを複数件取得することができます。
Gallery.Itemsに指定したり、Collectionに入れたりして使うことができます。
レコードを複数件取得する方法(データソースの一部のレコードをフィルタリングして取得する)
Filter(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
Name = "Makoto Maeda" // 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。
)
LookUp()・・・レコードを1件取得したいときに!
LookUp()関数を使用するとレコードを1件取得することができます。
複数のレコードが条件に一致する場合には、最初の1件が取得されます。
レコードを1件取得する方法
LookUp(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
ID = "1" // 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。
)
レコードを1件取得して、特定のフィールドを取得する方法
LookUp(
[データソース], // 第一引数。ExcelやSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。
ID = "1", // 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。
Name // 第三引数。省略可能。取得したいフィールドが1つだけの場合は、フィールドを指定することで帯域やメモリの節約、パフォーマンス向上につながります。
)
なんかうまくいかないんだけど!?
データソースが選択肢に出てこないときは・・・
データソースが選択肢に出てこないときは、Power Apps にデータソースへの参照設定ができていないかもしれません。
まだ設定していない場合は
[ビュー] > [データソース] > [コネクタ] > [OneDrive for Business]
[ビュー] > [データソース] > [コネクタ] > [SharePoint]
などからデータソースを選んで参照設定しておきましょう。
Excelをデータソースにしていて、レコードの登録、更新がうまくいかないときは・・・
データソースにしているExcelをブラウザ等で開いていませんか?
ファイルが開いているとPower Apps からアクセスすることができません。開いているファイルを閉じてもう一度試してみてください。
赤いエラーが出てうまくいかないときは・・・
Power Apps は優しいので、エラー解消のヒントを教えてくれています。エラー箇所にカーソルをもっていってエラーメッセージを読んでみましょう。エラー解消の一番の助けになるはずです。
まとめ
以上がまず押さえておきたいデータ操作に使う関数です。実は他にもデータ操作に使える関数がありますが、多くのケースでは先に挙げた関数でカバーできると思います。まずはこの関数を扱えるようになりましょう。
PR
Power Apps や Power Automate のアプリ作成支援や導入支援サービスを提供しています。
Power Apps / Power Automate 技術支援サービス | ZEE CitizenDevSupport