Notesへ戻る

Power Platformメモ

Power AppsのPatchとSubmitFormの違い

Power AppsでデータをSharePointに保存するとき、PatchとSubmitFormのどちらを使うべきか整理したメモです。

Power AppsPatchSubmitFormSharePoint

Power AppsのPatchとSubmitFormの違い

この記事の位置づけ

この記事は、Power Appsの初学者向け技術メモです。環境や設定によって挙動が異なる場合があります。

実際に使うアプリ・フォーム・データソースで動作を確認してください。

ざっくり言うと

Power Appsでデータを保存するとき、「Patchを使うか、SubmitFormを使うか」で迷うことがよくあります。

ざっくりした使い分けの入口は次のとおりです。

  • SubmitForm:フォームコントロールと組み合わせて使う。設定が少なく、新規・編集どちらも1つの関数で対応できる
  • Patch:フォームを使わずに任意のデータを保存できる。柔軟性が高いが、書き方が増える

「フォームコントロールを使っているならSubmitForm、自前のUIや複数テーブルへの同時更新が必要ならPatch」という選び方が入口になります。

SubmitFormの特徴

向いている使い方

  • フォームコントロール(EditForm / DisplayForm)を使っている
  • 新規作成と編集を同じ画面で扱いたい
  • なるべくコードを少なくしたい

基本的な使い方

SubmitForm(Form1)

Form1 の各フィールドに入力されたデータを、接続先のデータソース(SharePointリストなど)に保存します。

フォームの DefaultModeFormMode.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

関連メモ・関連ツール