【PowerApps】Patchエラー?CollectionからSharePointリスト
発生したエラー
アプリの概要
作成手順
SharePointリスト(マスター)→ Collection → SharePointリスト(保存用)
送信ボタンを押すと、CollectionデータをSharePointリスト(以下SPOリスト)に保存するロジックを、以下の手順で実装していました。
- 製品情報が格納されたSPOリスト(以下マスターSPO)を作成
- PowerAppsに製品一覧表を作成
- 各製品にチェックマークを追加
- チェックマークを押すと、マスターから一致する製品データをCollectionに保存
- 送信ボタンを追加
- 送信ボタンを押すと、CollectionからSPOリスト(以下保存用SPO)に保存
問題のコード
送信ボタンのOnSelectプロパティに実装したのが、以下のコード。
Patch (保存用SPOName, collectionName)
しかし、Record値が必要であるとエラーが発生。データベースに保存できません。
原因
実は原因は明確には突き止められませんでした。ただ、PowerAppsがCollectionデータと保存用SPOの列項目が異なっていると認識したことが原因なのではないかと思います。
Record値が求められたということは、以下のようなPatch関数をPowerAppsは求めていたということです。(参考:Microsoft Learn)
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])
そのため、collectionNameをコレクションの名前だということを認識し、データをそのままマウントしてほしいことを認識していないのでは?と予想立てました。
解決方法
解決方法は画面のOnVisibleプロパティに、以下のコードを追加するだけです。
ClearCollect (collectionName, Defaults (保存用SPOName)) ;
Clear (collectionName)
このコードの目的は、Collectionデータと保存用SPOをリストの列項目を一致させるために記述しました。
1行目で、保存用SPOのデータをCollectionにそのまま格納し、新しいCollectionを作成。2行目で、新規作成したCollectionのデータを全て消し、新しいデータを入れるための準備をします。Clear関数はデータを消すだけなので、Collectionと列項目は残ります。
この結果、エラー解消しました!
お疲れさまでした!