備忘用ですが、PowerAppsにおいて、SubmitFormで追加されたレコードに対してPatch関数を使う方法をまとめます。(もっと効率的な方法があるかもしれませんがご了承ください。)
やりたいこと
やりたいことは以下のとおりです。
・SubmitFormで追加されたレコードに対して、Patch関数を使って内容を上書きする。
・今回は3パターン。テキスト列、ユーザー列、選択肢列。
前提(SharePointリスト)
今回は「テキスト」「ユーザー」「選択肢」にPatch関数を使いたいので、次のようなSharePointリストを作成しました。
SharePointリストの詳細については以下のとおり。
<リスト名> Patch関数テスト
<列> テキスト列 :1行テキスト
ユーザー列:ユーザー
選択肢列:選択肢
Power Appsのアイテム構成(概要)
一旦概要を先にまとめます。詳細については続いて説明します。
データ
準備しているSharePointリストを追加しておきます。
画面全体
画面全体としては次のとおりです。
「ギャラリー」「ボタン」「フォーム」の3項目で分かれています。
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関数
選択肢列であれば次のとおり。若干テキスト列とは変わる。Value:を忘れがちです。
Patch(
Patch関数テスト,
Form1.LastSubmit,
{選択肢列: {Value: "選択肢B"}}
)
ユーザー列のPatch関数
ユーザー列の場合は、次のとおり。これはもうコピペが望ましいです。
Patch(
Patch関数テスト,
Form1.LastSubmit,
{
ユーザー列: {
Claims: "i:0#.f|membership|" & Lower(User().Email),
Department: "",
DisplayName: "",
Email: "",
JobTitle: "",
Picture: ""
}
}
)
まとめ
今回は備忘用ではありますが、でSubmitFormで追加されたレコードに対してPatch関数を使う方法をまとめました。PowerAppsで利用機会は多いかなと思います。最後までご覧いただきありがとうございました。