【備忘用】SubmitFormで追加されたレコードに対してPatch関数を使う方法 | PowerApps

難易度】★★☆☆☆ 
【時 間】10分程度

備忘用ですが、PowerAppsにおいて、SubmitFormで追加されたレコードに対してPatch関数を使う方法をまとめます。(もっと効率的な方法があるかもしれませんがご了承ください。)

目次

やりたいこと

やりたいことは以下のとおりです。

SubmitFormで追加されたレコードに対して、Patch関数を使って内容を上書きする。
・今回は3パターン。テキスト列、ユーザー列、選択肢列

前提(SharePointリスト)

今回は「テキスト」「ユーザー」「選択肢」にPatch関数を使いたいので、次のようなSharePointリストを作成しました。

SharePointリストの詳細については以下のとおり。
<リスト名> Patch関数テスト
<列> テキスト列
:1行テキスト
    ユーザー列:ユーザー
    選択肢列:選択肢

Power Appsのアイテム構成(概要)

一旦概要を先にまとめます。詳細については続いて説明します。

データ

準備しているSharePointリストを追加しておきます。

画面全体

画面全体としては次のとおりです。
「ギャラリー」「ボタン」「フォーム」の3項目で分かれています。

Screenshot

Power Appsのアイテム構成(詳細)

続いて詳細版について、「ギャラリー」「ボタン」「フォーム」それぞれでまとめます。

ギャラリー

SharePointリストを表示させています。設定値は以下参照ください。

A

ThisItem.ID
 //テキストラベルのTextに設定。
 //IDについて単純表示。

B

"テキスト行:"&ThisItem.テキスト列
 //テキストラベルのTextに設定。
 //SharePointリストの「テキスト列」のデータを単純表示。

C

"ユーザー氏名:"&ThisItem.ユーザー列.DisplayName
 //テキストラベルのTextに設定。
 //SharePointリストの「ユーザー列」の氏名について単純表示。

D

"選択肢:"&ThisItem.選択肢列.Value
 //テキストラベルのTextに設定。
 //SharePointリストの「選択肢」のデータを単純表示。

ボタン

ボタンには「フォームのSubmit」と「Patch関数起動用の変数Set」を仕込んでいます。以下参照ください。

E

SubmitForm(Form1);
Set(button,"TX");
 //ボタンのOnSelectに設定。
 //1行目:フォームをサブミット。
 //2行目:「button」という変数に「TX」という文字列を格納。※文字列は任意

F

SubmitForm(Form1);
Set(button,"SE");
 //ボタンのOnSelectに設定。
 //1行目:フォームをサブミット。
 //2行目:「button」という変数に「SE」という文字列を格納。※文字列は任意

G

SubmitForm(Form1);
Set(button,"US");
 //ボタンのOnSelectに設定。
 //1行目:フォームをサブミット。
 //2行目:「button」という変数に「US」という文字列を格納。※文字列は任意

フォーム

対応するボタンが押された際に、フォームの内容でSharePointリストのデータが上書きされるようにしました。

//フォームのOnSuccessに設定。

Switch(
    button,
    "TX",     //buttonという変数の値がTXだったら
    Patch(
        Patch関数テスト,
        Form1.LastSubmit,
        {テキスト列: "かきくけこPatch"}
    ),
    "SE",    //buttonという変数の値がSEだったら…
    Patch(   
        Patch関数テスト,
        Form1.LastSubmit,
        {選択肢列: {Value: "選択肢B"}}
    ),
    "US",    //buttonという変数の値がUSだったら…
    Patch(
        Patch関数テスト,
        Form1.LastSubmit,
        {
            ユーザー列: {
                Claims: "i:0#.f|membership|" & Lower(User().Email),
                Department: "",
                DisplayName: "",
                Email: "",
                JobTitle: "",
                Picture: ""
            }
        }
    )
);

Patch関数の書き方部分抜粋

「テキスト」「選択肢」「ユーザー」それぞれのPatch関数の書き方を抜粋します。

テキスト列のPatch関数

テキスト列であれば次のとおり。一番オーソドックス。

Patch(
    Patch関数テスト,
    Form1.LastSubmit,
    {テキスト列: "かきくけこPatch"}
)

//一般化したら
 Patch(
   リスト名,
   どのレコードに対して行うか,
   {SharePointリストの列名:”上書きしたい文字列“}
  )

選択肢列のPatch関数

選択肢列であれば次のとおり。若干テキスト列とは変わる。Value:を忘れがちです。

Patch(   
    Patch関数テスト,
    Form1.LastSubmit,
    {選択肢列: {Value: "選択肢B"}}
)

// 一般化すると…
 Patch(   
  リスト名,
  どのレコートに対して行うか,
  {SharePointリストの列名: {Value: “選択肢として設定しているもの“}}
 )

ユーザー列のPatch関数

ユーザー列の場合は、次のとおり。これはもうコピペが望ましいです。

Patch(
    Patch関数テスト,
    Form1.LastSubmit,
    {
        ユーザー列: {
            Claims: "i:0#.f|membership|" & Lower(User().Email),
            Department: "",
            DisplayName: "",
            Email: "",
            JobTitle: "",
            Picture: ""
        }
    }
)

// 一般化すると…
 Patch(
   リスト名,
   どのレコードに対して行うか,
   {
     SharePointリストの列名: {
        Claims: “i:0#.f|membership|” & Lower(User().Email),
        Department: “”,
        DisplayName: “”,
        Email: “”,
       JobTitle: “”,
       Picture: “”
   }
 }
)

まとめ

今回は備忘用ではありますが、でSubmitFormで追加されたレコードに対してPatch関数を使う方法をまとめました。PowerAppsで利用機会は多いかなと思います。最後までご覧いただきありがとうございました。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次