Power Appsを使ってよくわからなかったのがコレクションという機能です。
ここではコレクションの紹介や使い方をまとめていきます。
コレクションとは?
コレクションは、
Holds a table that can be referenced from anywhere in the app. Allows the contents of the table to be modified rather than being set as a whole. Can be saved to the local device for later use
つまり「アプリからいつでも参照できるテーブル」であり、「ローカルデバイスに保存されえる」ものだそうです。
Understand variables in canvas apps - Power Apps | Microsoft Docs
ということで、データとして保持しておきたい変数はコレクションとして使うのがいいのかなと思います。
使い方
「ビュー」タブに「コレクション」があります。
ここで使用しているコレクションが一覧できます。データが入っているか、思った通りのデータになっているかは、こちらで逐次確認しましょう。
コレクションの設定
コレクションの初期化
「ClearCollect」は、コレクションをクリアして引数のテーブルに初期化しなおします。
ボタンに以下のようなコードを書いて実行して生成できます。
「cProduct」という名前のコレクションで「タイトルがバッテリー、量が10個、値段15ドル」というテーブルを設定しました。
ClearCollect( cProduct, { Title: "バッテリー", Quantity: 10, Price:15 } )
実行後にコレクションを画面で確認すると、確かにデータが追加されていました。
コレクションへテーブルを追加
「Collect」を使うと引数のデータをテーブルに追加できます。
Collect( cProduct, { Title: "USBケーブル", Quantity: 2, Price:5} ,{ Title: "スマホスタンド", Quantity: 0, Price:12 } )
コードをボタンに入れて実行してみると、コレクションの画面で追加されていることがわかります。
コレクションのテーブルを削除
「Remove」や「RemoveIf」を使います。
特定の状況のレコードをすべて削除するには以下のように記述します。
RemoveIf( cProduct, Quantity > 0 )
コレクションのデータを変更
「Update」「UpdateIf」などの関数で変更します。
「Update」では名前、対象行、変更内容を指定します。
最初の行のテーブル内容を変更すると
Update( cProduct, First(cProduct), { Title: "バッテリー", Quantity: 5, Price:15} )
ちゃんと反映されていました。
「UpdateIf」なら名前、条件、変更内容を指定します。
一度に全部変えるなら条件は「true」とします。
UpdateIf( cProduct, true, { Quantity: 0 } )
実行後Quantityの数値はすべて0となりました。
コレクションを全クリア
「Clear」でデータをクリアできます。
Clear( cProduct )
コードに入れて実行してみると、確かにデータがなくなっていました。
コレクションとしてテーブルを使っている場合、テーブルの関数で値を調べたり計算させることもできます。
コレクションの保存・読み込み
コレクションのメリットは、そのままデバイスに保存できることにあります。
「SaveData」コマンドにコレクションと保存名を渡します。
SaveData(cProduct,"savedata")
データの読み込みは「LoadData」を使います。
念のためClear
Clear( cProduct ); LoadData( cProduct, "savedata", true )
ただし開発画面やウェブプレイヤーでは動作しないと書かれているので、スマホ版で確認する必要がありそうです。
Understand variables in canvas apps - Power Apps | Microsoft Docs
Power Appsではデータやテーブルの管理がちょっとわかりにくかったです。アプリの作成には欠かせませんので、しっかり理解しておきましょう。
PowerAppsの使い方はこちら。