本記事はノーコードアプリ開発について全く知らなかった管理人が独学で勉強し、ここ大事!と感じた部分を記事にまとめています。
本ブログでは新UI画面で内容をまとめています。
新旧画面への切り替えは、下図を参考に該当アイコンをクリックしてください(^^)

まずはじめに
- Valid ifの基礎を勉強したい人
- アプリを利用する人によって入力する値に制限を付けたい人
- Valid ifに入力する関数の例を勉強したい人
- Valid ifに関数を入力することで、アプリ開発者が欲しいデータを収集できる
- Yes/NoとList の関数が理解できる
今回の記事は、AppSheetアプリに入力される値に制限を設ける設定に焦点を当てます。
アプリ開発者にとって、予期せぬデータが入力されることは、データの品質低下や後続の処理エラーに繋がることがあります。
しかし、この記事のような設定を導入すれば、想定外のデータを自動的に検知し、入力を弾くことが可能です。
内容的には中級者以上向けの話になりますが、ここに気づけるようになったあなたは、きっとアプリ開発に余裕が出てきた証拠!
私がよく使うValid if
に送る関数や設定を記事にまとめましたので、ぜひ参考にしてください(^^)
それでは勉強していきましょう!
Valid ifとは?

Valid if
は、AppSheetエディターのData
ペイン内、Column
タブから特定カラムの設定画面を開くと表示されます。

その中に「Data Validity
(データの有効性)」というセクションがあり、そこに以下の2つの項目があります。
Valid if
: 入力制限を判定するための関数を入力する場所です。Invalid value error
: 入力された値がValid if
で設定した条件を満たさなかった際に、ユーザーの画面に表示させるエラーメッセージです。
次に、このValid if
に入力が求められる関数のタイプを確認してみましょう。

Valid if
に入力できる関数は、大きく分けて2パターンあります。
- 「はい」か「いいえ」で答えることができる
Yes/No
関数 (例:[数量] > 0
やISNOTBLANK([商品名])
など) - 入力可能な値を指定する
List
関数 (例:{"A", "B", "C"}
やテーブル名[カラム名]
など)
まずは、この基本をしっかりと押さえてください。
AppSheetがどんなタイプの関数を求めているかを理解することが、AppSheet上達への近道です!

それぞれの関数で代表的なものをまとめました
Yes/Noを返す条件式が求められる箇所や関数についてまとめました(^^)
【永久保存版】AppSheetで覚えておくべきYes/No関数
リスト関数の入力が求められる箇所や代表的なものをまとめました(^^)
【永久保存版】AppSheetで覚えておくべきList関数
おすすめの入力制限

それでは、私がValid if
でよく使う設定を具体的に見ていきましょう。
今回検証に用いるテーブルの関係性は以下のとおりです。

各テーブルのカラムは以下のように設定しています。

- 入力者:
ユーザー
テーブルとRef
関係を結びつけるカラム - 所属:
[入力者].[所属]
の関数で、入力者
の所属情報を自動的に引っ張り出すためのカラム - 日付:
Date
データタイプのカラム - 入力制限の判定:
Valid if
の効果を確認するためのカラム

- 名前:
Label
値として表示させるカラム - email:
Key
値として設定するカラム - 所属:
[入力者].[所属]
の関数で情報を紐つけるためのカラム
それでは、これらの設定を使って具体的な入力制限の検証を始めていきましょう!
登録されているデータをリストとして表示させる

まず、設定が最も簡単な「入力してほしい値をリストとして提示する」方法を説明します。
この設定方法は非常にシンプルです。Valid if
に以下の形式で入力するだけです。
テーブル名[カラム名]
試しにValid if
にユーザー[名前]
を入力してみましょう。


「入力制限の判定」カラムは、この時点では任意の値を入力することが可能です。

ユーザー[名前]
の関数をValid if
に入力すると、「入力制限の判定」カラムの入力値が、ボタン形式の選択肢として表示されるようになります。
💡 ポイント!
Valid if
への入力は、あくまで入力制限です。そのため、表示された選択肢以外の新しい項目を増やすことはできません。
もし、ユーザーが新規の選択肢を追加することを許可したい場合は、Valid if
ではなくSuggested Value
にリストを送るようにしましょう。
日付カラムの入力値によって対象カラムの入力を制限させる

次に、データが入力される日付に基づいて、他のカラムの入力を制限する設定を作成してみましょう。
これにより、例えば将来の日付や過去の日付など、特定の期間外の入力を防ぐことができます。

用いる関数はEOWEEK()関数です!
EOWEEK()関数について深く勉強したい方は、こちらの記事を参考にしてください(^^)
【これで解決!】EOWEEK()関数とEOMONTH()関数の使い方
今回は、入力週の翌週水曜日以降の日付のみを許可する制限をターゲットに設定してみました。
Valid if
に入力する関数は、以下を用います。
[_THIS] >= (EOWEEK(TODAY()) + 4)

関数の解説:
TODAY()
: 現在の日付を取得します。EOWEEK(TODAY())
:TODAY()
が属する週の終わり(通常は日曜日)の日付を取得します。EOWEEK(TODAY()) + 4
:EOWEEK(TODAY())
で取得した日付に4日を加算します。これにより、翌週の水曜日の日付が算出されます。(例:今日が2025年6月5日(木)の場合、EOWEEK(TODAY())
は2025年6月8日(日)を返し、それに4日足すと2025年6月12日(水)となります。)[_THIS]
: 現在編集しているカラムの値を参照します。[_THIS] >= ...
: 編集中のカラムの値が、計算された「翌週水曜日」以降の日付である場合にTRUE
を返します。
この関数は、今週末から4日を足した日(つまり来週の水曜日)以降の入力のみを許可する制限をかけています。
例えば、来週の月曜日以降にしたい場合は+2
に、来週の金曜日以降にしたい場合は+6
に変更すればOKです!
この設定を行った結果を見てみましょう。

例として、2025/06/12
(来週の水曜日)より前の日付を入力しようとすると、入力値が弾かれます。

関数の条件を満たす日付(来週の水曜日以降)であれば、入力を受け付けます。
このように日付に基づく入力制限は、特定の期間内のデータのみを受け付けたい場合に非常に有効です(^^)
文字数と特定の文字が含まれているかどうかを判定する

次に、入力された値が特定の文字数であったり、特定の文字列を含んでいるか(または含んでいないか)を検証する入力制限を考えてみましょう。
こういった時に役立つ関数を挙げてみました。
LEN()
関数: 文字列の文字数を数える関数CONTAINS()
関数: ある文字列の中に、特定の文字や単語が含まれているかを判定する関数RIGHT()
関数とLEFT()
関数: 文字列の先頭や末尾から特定の文字数分の文字列を抽出する関数

別の記事でこれらの記事についてまとめています
知っていると便利なText関数を厳選してまとめました(^^)
【永久保存版】AppSheetで覚えておくべきText関数
Yes/Noを返す条件式が求められる箇所や関数についてまとめました(^^)
【永久保存版】AppSheetで覚えておくべきYes/No関数
それでは、これらの関数を組み合わせて、Valid if
で検証してみましょう!
Valid if
に以下の関数を入力します。

AND(LEN([_THIS]) = 5, LEFT([_THIS], 1) = "9")
この関数は、「文字数が5、かつ文字列の始めが"9"
であること」を条件としています。

文字列の始めが"9"
でも、文字列が5文字以上であるためNGとなります。

文字列が5文字でも、最初が"9"
ではないためNGとなります。

文字数が5、かつ文字列の始めが"9"
である場合は、入力を受け付けてくれます(^^)
もう1つ、別のパターンを試してみましょう。
Valid if
に以下の関数を入力します。

AND(LEN([_THIS]) = 11, NOT(CONTAINS([_THIS], "-")))
この関数は、「文字数が11、かつ文字列の中にハイフン(-
)を含めないこと」を条件としています。
例えば、電話番号や特定のコードを入力する際に、桁数を揃えつつ不要な記号の入力を防ぎたい場合に有効です。


この設定により、携帯番号をハイフンありで入力すると弾かれますが、ハイフン無しで携帯番号を入力すると受け付けてくれます。
このように、LEN()
、CONTAINS()
、そしてNOT()
といった関数を組み合わせることで、ユーザーに特定の形式での入力を強制し、データの整合性を高めることができます(^^)
〇〇以上、〇〇以下を満たしているかを判定する
続いて、入力された数字が特定の範囲内にあるかを判定する入力制限を見ていきましょう。
これは、数量や点数など、数値データの入力精度を高めるのに役立ちます。

Valid if
には、AND()
関数と比較演算子を組み合わせて、以下のように入力します。

AND([_THIS] < 5, [_THIS] >= 0)
この関数は、「入力される数字が0以上、かつ5未満であること」を条件としています。

入力値が5
(またはそれ以上)の場合、条件「5
未満」を満たさないため、入力が弾かれます。

一方、入力値が1
のように0
以上5
未満である場合は、すべての条件を満たすため、入力値として受け付けてくれます。
このように、AND()
関数を使うことで複数の数値条件を組み合わせ、より厳密な入力範囲を設定することが可能です。
アプリユーザーによって入力値を変更させる

最後に、ユーザー属性に基づいて表示される入力項目を動的に変更する設定をしてみます(^^)
この種の動的な入力制御は、特定の状況下でユーザーに対して適切な選択肢や情報のみを提示するために有効です。
AppSheetの表現言語には、入力項目の動的な制御を実現するための複数の関数が用意されています。
代表的な関数を以下に示します。
SELECT()
関数: 指定された条件を満たすレコードから、特定のカラムの値をリストとして抽出します。LIST()
関数: 複数の指定された値を要素とするリストを生成します。IF()
関数: 単一の条件分岐を構築し、条件の真偽に基づいて2つの結果を返します。IFS()
関数: 複数の条件を順次評価し、最初に真となった条件に対応する結果を返します。これは、3つ以上の分岐ロジックを実装する際に特に有用です。
それではIFS()
関数を入力して、ユーザーの「所属」カラムの値に基づいて、次に表示される選択肢を動的に変更する設定を検証してみましょう!
この設定は、Valid IfやSuggested Valuesに適用されることが多いです。

IFS( [所属] = "開発部", LIST("A型", "B型", "O型"), [所属] = "営業部", LIST("天秤座", "山羊座", "魚座"), [所属] = "経理部", LIST("読書", "ドライブ", "キャンプ")
)
上記のIFS()
関数を適用することで、AppSheetアプリケーションは以下のように動作します。
- ユーザーが入力した
[所属]
の値が「開発部」である場合、当該入力項目には「A型」「B型」「O型」のリストが選択肢として提示されます。 [所属]
が「営業部」である場合、選択肢は「天秤座」「山羊座」「魚座」のリストに切り替わります。[所属]
が「経理部」である場合、選択肢は「読書」「ドライブ」「キャンプ」のリストに変化します。

所属が開発部のAさんは、選択肢がA型、B型、O型になります。

所属が営業部のBさんは、選択肢が天秤座、山羊座、魚座になります。


所属が経理部のCさんは、選択肢が読書、ドライブ、キャンプになります。
まとめ
本記事では、AppSheetにおける入力制限の設定に焦点を当てて解説しました。
アプリ開発者にとって、予期せぬデータの入力は、データ品質の低下や後続処理におけるエラーのリスクを高める要因となります。
このような課題に対し、AppSheetの入力制限機能を適切に活用することで、アプリケーションへの入力データを自動的に検知し、不適切な値を排除することが可能となります。
本記事では、汎用性の高い設定例を中心にまとめましたが、この他にもたくさんのTIPSがあると思うので、面白い設定があれば記事を追加したいと思います。

応用を学びたい人はこちらの記事を参考にしてください
全角英数字や半角英数字などカラムに登録する値を制限する方法が学べます(^^)
【これで解決!】半角英数字のみ入力を許す方法
記事内容について何かありましたらページ下にあるコメント欄からコメントをお願いします。
わかりにくかった部分や間違った情報などご指摘いただけると嬉しいです!
勉強お疲れさまでした(^^)