PowerAppsでetag missmatch clientRequestIdが表示された場合の対処方法

PowerAppsでetag missmatch clientRequestIdが表示された場合の対処方法

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

Patch関数

UpdateIf関数

etag(WikiPedia)

 

Power Appsカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。