Notesへ戻る
Power Platformメモ
Power AppsのPatchとSubmitFormの違い
Power AppsでデータをSharePointに保存するとき、PatchとSubmitFormのどちらを使うべきか整理したメモです。
Power AppsのPatchとSubmitFormの違い
この記事の位置づけ
この記事は、Power Appsの初学者向け技術メモです。環境や設定によって挙動が異なる場合があります。
実際に使うアプリ・フォーム・データソースで動作を確認してください。
ざっくり言うと
Power Appsでデータを保存するとき、「Patchを使うか、SubmitFormを使うか」で迷うことがよくあります。
ざっくりした使い分けの入口は次のとおりです。
- SubmitForm:フォームコントロールと組み合わせて使う。設定が少なく、新規・編集どちらも1つの関数で対応できる
- Patch:フォームを使わずに任意のデータを保存できる。柔軟性が高いが、書き方が増える
「フォームコントロールを使っているならSubmitForm、自前のUIや複数テーブルへの同時更新が必要ならPatch」という選び方が入口になります。
SubmitFormの特徴
向いている使い方
- フォームコントロール(EditForm / DisplayForm)を使っている
- 新規作成と編集を同じ画面で扱いたい
- なるべくコードを少なくしたい
基本的な使い方
SubmitForm(Form1)
Form1 の各フィールドに入力されたデータを、接続先のデータソース(SharePointリストなど)に保存します。
フォームの DefaultMode が FormMode.New なら新規作成、FormMode.Edit なら既存レコードの更新として扱われます。
注意点
- SubmitFormは、フォームコントロールとセットで使う前提の関数です。フォームコントロールを使っていない場合はそのまま使えません。
OnSuccess/OnFailureプロパティで成功・失敗後の処理を書けます。
Patchの特徴
向いている使い方
- フォームコントロールを使っていない(カスタムのテキスト入力、スライダー、ドロップダウンなどを直接使っている)
- 複数のリストに同時に保存したい
- 特定の列だけ更新したい
- ボタン1つで複数のレコードをまとめて更新したい
基本的な使い方
Patch(
'SharePointのリスト名',
Defaults('SharePointのリスト名'), // 新規作成の場合
{
Title: TextInput1.Text,
Category: Dropdown1.Selected.Value
}
)
既存レコードを更新する場合は、Defaults(...) の部分を更新したいレコード(例:Gallery1.Selected)に変えます。
Patch(
'SharePointのリスト名',
Gallery1.Selected, // 更新対象のレコード
{
Title: TextInput1.Text
}
)
注意点
- Patchは列名を自分で指定するため、列名の確認が必要です。SharePointの内部列名(表示名と異なる場合がある)を使う点に注意が必要です。
- 選択肢列(Choice列)をPatchで更新する場合は、
{Value: "選択肢のテキスト"}の形式で渡す必要があります。
迷ったときの判断基準
| 状況 | 推奨 |
|---|---|
| フォームコントロールを使っている | SubmitForm |
| 自前の入力UIを使っている | Patch |
| 新規・編集を1つの画面で扱いたい(シンプルに) | SubmitForm |
| 複数のリストに同時保存したい | Patch |
| 特定の列だけ更新したい | Patch |
| コード量を減らしたい | SubmitForm |
関連メモ・関連ツール
- Power Appsで改行がうまく反映されないときの考え方
- Power AutomateのSendEmailV2でHTMLメールを送る基本
- Power AppsのFilterとSearchの違い