目次
PowerAppsでetag missmatch clientRequestIdが表示された場合の対処方法
以前の記事で、Patch関数を利用してSharePointのカスタムリストの値を更新していたのですが、
連続して何度もやると、etag missmatch clientRequestIdとエラーが表示されてしまいます。
Patch関数の前や後ろにRefresh(データソース)とかで解消されるのかと思いましたが、解消されずじまいでした。
Patch関数ではなくUpdateIf関数を利用することで回避できました。
前回のキャンバスでetag missmatch clientRequestIdを確認してみる
値変更用に作成したボタンを何回かポチポチします。
すると・・・
こんな感じにエラーになりカスタムリストも更新されません。
楽観ロックがかかっている状態になっていると思われます。
ロックは大事なので仕方ないですね。
UpdateIf関数に変更し、再度実行
前回のPatch関数を利用した数式
Patch( TEST, First( Filter( TEST, タイトル = DataCardValue1.Text ) ), { 貸出先:{ Value:Office365ユーザー.MyProfile().Mail, '@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser", Claims: "i:0#.f|membership|" & Lower(User().Email), Department: "", DisplayName: User().Email, Email: User().Email, JobTitle: ".", Picture: "." }, 状況: { Value: "選択肢2", '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference" } } )
UpdateIfへ置き換えた数式
この数式を下記のように変更します。
UpdateIf( TEST,タイトル = DataCardValue1.Text, { 貸出先:{ Value:Office365ユーザー.MyProfile().Mail, '@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser", Claims: "i:0#.f|membership|" & Lower(User().Email), Department: "", DisplayName: User().Email, Email: User().Email, JobTitle: ".", Picture: "." }, 状況: { Value: "選択肢2", '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference" } } )
これで何回ポチポチしても、etag missmatch clientRequestIdとエラーになることなく更新することができます。
Patch関数はどこで使うのがいいのか
とても個人的意見ですが、Patch関数はレコードを新規作成するときに利用するのがいいのかなと思いました。
ログや履歴を1行として記録させるときには便利に使えるかなと。
参考URL