目次
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
