Form入力時に新規・編集を判別し表示・非表示を制御したい

AppSheet
AppSheetDataTips関数

AppSheet アプリで「新規登録(Add)時には項目を隠し、編集(Edit)時には表示したい」といった細かな表示制御はよくある要件ですが、Quick-Edit やダイアログ編集では CONTEXT("FormMode") を使った制御が効かないケースがあります。

本記事では、必須入力用のカラム を活用し、[_THISROW_BEFORE] を使って 新規か編集か を判別し、確実に表示制御を行う方法をご紹介します。


1. 問題定義

  • CONTEXT("FormMode") を用いた Show_If では、Quick-Edit(インライン編集)やダイアログ編集で期待どおりに動作しない。
  • フルフォームを2種類用意する手間や、Editable_If でのグレーアウト運用だけでは UX として不十分なケースがある。

そこで着目したいのが「必須入力カラム」です。 新規登録では空、編集では必ず値が入っているこの性質を利用します。


2. 必須入力カラムを使った判別ロジック

AppSheet では、[_THISROW_BEFORE] を使うと「レコード保存前の既存データ」を参照できます。

Initial Valueが設定された項目では[_THISROW_BEFORE]でも値がセットされてしまうため、入力必須の項目を指定する必要があります。

Show_If

ISNOTBLANK([_THISROW_BEFORE].[必須入力カラム])
  • 新規追加(Add):[_THISROW_BEFORE].[必須入力カラム] は空 ISNOTBLANK()FALSE 非表示
  • 編集(Edit):すでに必須入力カラムに値が入っている ISNOTBLANK()TRUE 表示

この方法なら、FormMode に依存せず、確実に新規登録/編集を判別できます。


3. 実装手順

  1. 必須入力用のカラム追加
    • 例: 必須入力 (Text 型)
    • フォームの「必須」設定を ON にし、新規登録時に必ず入力させる
  2. 表示制御を行いたいカラムの設定
    • Data ▶ Columns ▶ 対象カラム ▶ Show_If に以下を設定ISNOTBLANK([_THISROW_BEFORE].[必須入力])
  3. 同期して動作確認
    • 新規フォームを開くと対象カラムは非表示
    • 既存レコードを編集すると対象カラムが表示

4. Tips & 注意点

  • 必須入力カラムには一意性は不要。フォームが開かれた時点で空かどうかだけ判定します。
  • 編集画面でも一度未入力のまま保存するワークフローがある場合は、別途 Valid_IfEditable_If でガードしてください。
  • [_THISROW_BEFORE] は「保存前の値」を参照するため、実績レコードのように新規登録なしで複数行作成するテーブルでは追加のカラムを用意するか工夫が必要です。

まとめ

  • Quick-Edit やダイアログ編集でも確実に動作する、新規 vs. 編集判定の手法として 必須入力カラム + [_THISROW_BEFORE] を活用できる
  • CONTEXT("FormMode") に依存しないため、シンプルかつ頑健な表示制御が実現可能