AppSheetで入力フォームを作ったものの、「担当者が自由入力するため表記がばらつく」「複数の候補を選べる項目を作りたい」「選択肢を別の表から自動表示したい」と悩んでいないでしょうか。こうした入力ミスや表記揺れを減らせる列タイプが、EnumとEnumListです。Enumは一つだけ選ぶ項目、EnumListは複数選ぶ項目に向いています。ただし、Values、Valid If、Suggested valuesの違いを理解せずに設定すると、候補が表示されない、想定外の値を保存できてしまうといった問題が起こります。基本設定から実務向けのプルダウン、連動する選択肢、失敗例まで順番に確認していきましょう。

👑ステータスを選択式にしたのに、「完了」「完了済み」「済」と、似た言葉がいくつも登録されてしまいましたわ。

🤖自由入力の列をEnumへ変更し、使用できる選択肢を整理すれば、表記揺れを抑えられます。

👑一つだけ選ぶ項目と、複数選ぶ項目では設定が違いますの?

🤖一つならEnum、複数ならEnumListです。さらに、固定候補とマスタ連動を使い分けることが実務では大切です。
AppSheetのEnumとEnumListとは
EnumとEnumListは、あらかじめ用意した候補から値を選択させるための列タイプです。Googleの公式ヘルプでは、Enumは許可された一覧から一つの値を選択するタイプ、EnumListは同じ仕組みで複数の値を選択できるタイプとして説明されています。
Enumは一つの値を選択する
Enumは、候補の中から一つだけ選んでもらう項目に使用します。タスクのステータス、申請結果、商品カテゴリ、優先度など、同時に二つ以上の状態にならない項目に適しています。
- ステータス:未着手、進行中、確認待ち、完了
- 優先度:高、中、低
- 申請結果:承認、差し戻し、却下
- 入出庫区分:入庫、出庫、棚卸調整
- 問い合わせ種別:質問、不具合、見積依頼、その他
例えば、ステータスをTextの自由入力にすると、「作業中」「対応中」「進行中」など、意味が近い値が別々に保存されます。Enumで候補を統一すれば、集計やSliceの条件式も作りやすくなります。
EnumListは複数の値を選択する
EnumListは、一つの行に複数の候補を保存したい場合に使用します。担当者の保有スキル、設備点検で見つかった不具合、商品の対応カテゴリ、連絡方法などに向いています。
- 対応方法:電話、メール、訪問、オンライン会議
- 保有スキル:営業、経理、IT、デザイン
- 不具合内容:異音、漏れ、破損、汚れ
- 通知先:管理者、担当者、経理、現場責任者
- 商品タグ:新商品、重点販売、在庫注意、季節商品
EnumListは複数の値を保存できるため柔軟ですが、何でもEnumListにすると集計や条件判定が複雑になります。一つの状態を表す項目はEnum、複数の特徴を持たせる項目はEnumListと考えると判断しやすくなります。
EnumとEnumListの違い
| 比較項目 | Enum | EnumList |
|---|---|---|
| 選択できる数 | 一つ | 複数 |
| 主な用途 | 状態、区分、分類 | タグ、スキル、複数条件 |
| 入力例 | 進行中 | 電話、メール、訪問 |
| 条件判定 | [ステータス] = “完了” | IN(“電話”, [対応方法]) |
| 集計のしやすさ | 比較的簡単 | 設計によっては複雑 |
| 向いている項目 | 一つだけ確定する値 | 同時に複数該当する値 |


👑「候補がいくつあるか」ではなく、「一度にいくつ選ぶ必要があるか」でEnumとEnumListを選ぶと迷いにくいですわ。
Enumでプルダウンを設定する基本手順
最初は、選択肢を直接登録する固定プルダウンから試すと理解しやすくなります。例として、タスク管理テーブルのステータス列に「未着手」「進行中」「確認待ち」「完了」を設定します。
手順1:対象の列を開く
- AppSheetエディタで対象アプリを開く
- Dataの設定から対象テーブルを選ぶ
- Columnsまたは列設定を開く
- プルダウンにしたい列を選択する
画面名称やメニューの位置は更新によって変わることがあります。見つからない場合は、データ、テーブル、列の順に設定画面を確認してください。
手順2:TypeをEnumに変更する
対象列のTypeをEnumへ変更します。ステータスのような文字を保存する場合は、Base typeをTextにします。数字の候補を保存するならNumber、日付ならDateなど、実際に保存する値に合わせてBase typeを選びます。
Base typeが実際の値と合っていないと、候補が表示されても保存時にエラーになる場合があります。「100」「200」「300」を数値として計算したいのにTextで保存すると、後の集計でも扱いにくくなるため注意してください。
手順3:Valuesに選択肢を追加する
Valuesの項目へ、フォームに表示したい候補を追加します。
- 未着手
- 進行中
- 確認待ち
- 完了
候補の表記は、実際の業務ルールと合わせます。「完了」と「完了済み」のように似た値を並べると、利用者が判断できません。選択肢を作る前に、各値の意味と切り替えるタイミングを決めておく必要があります。
手順4:Input modeを確認する
Input modeでは、候補の見せ方を設定します。一般的なプルダウン形式にしたい場合はDropdownを選びます。公式ヘルプでも、EnumまたはEnumListを選択し、Valuesへ候補を追加して、Input modeをDropdownにする手順が案内されています。
選択肢が少ない場合はボタン形式が操作しやすいこともありますが、候補が多いとフォームが縦に長くなります。三つ前後ならボタン、候補数が多い場合はプルダウンを検討するとよいでしょう。
手順5:フォームから保存テストを行う
- アプリのプレビューで新規登録フォームを開く
- ステータス列を選択する
- 設定した候補が表示されるか確認する
- 一つの値を選択して保存する
- データソースへ正しく記録されたか確認する
設定画面に候補が表示されていても、実際の端末では同期前の情報が残っている場合があります。保存できないときは、アプリの保存と同期を行い、Base typeやValid Ifも確認してください。
EnumListで複数選択を設定する手順
EnumListも基本的な設定方法はEnumと同じですが、複数選択した値の保存方法や条件式が異なります。例として、問い合わせ管理テーブルの対応方法列に「電話」「メール」「訪問」「オンライン会議」を設定します。
TypeをEnumListに変更する
- 対象テーブルの列設定を開く
- 対応方法列のTypeをEnumListへ変更する
- Base typeをTextに設定する
- Valuesへ候補を追加する
- Input modeをDropdownにする
- 保存して複数選択を試す
Base typeには、EnumList内の一つひとつの値がどの種類なのかを設定します。文字の一覧ならText、関連テーブルの行を複数選択するならRefを使用する方法があります。
Item separatorを確認する
EnumListには、複数の値を区切るItem separatorの設定があります。データソースによっては、保存された複数の値が区切り文字を含む形で確認できます。区切り文字を途中で変更すると、既存データの読み取りに影響する可能性があるため、本番運用後の変更は慎重に行ってください。
EnumListを条件式で判定する
EnumListは複数の値を持つため、Enumと同じ等号ではなく、IN関数を使って含まれているかを確認します。
IN(“電話”, [対応方法])
対応方法のEnumListに「電話」が含まれている場合にTRUEとなります。
例えば、電話対応を行った問い合わせだけをSliceへ表示する場合や、選択された不具合内容によって追加項目を表示する場合に利用できます。


👑EnumListは入力画面では扱いやすくても、集計時には一つのセルに複数の意味が入りますの。集計方法まで考えてから採用いたしましょう。
選択肢を作る4つの方法
AppSheetのプルダウンは、Valuesへ固定値を入力する以外にも作成できます。選択肢が変わる頻度や、入力をどこまで制限したいかに応じて使い分けます。
方法1:Valuesへ固定候補を登録する
候補がほとんど変わらない項目に適しています。優先度、申請結果、入出庫区分など、管理者が決めた少数の選択肢を表示する場合に向いています。
高
中
低
設定が分かりやすく、別テーブルも必要ありません。一方で、候補を追加するたびにアプリの設定変更と保存が必要です。店舗名、担当者名、商品名のように変更が多い項目には不向きです。
方法2:Valid Ifに固定リストを設定する
Valid Ifへリストを返す式を設定すると、その一覧がプルダウンの候補になります。
LIST(“未着手”, “進行中”, “確認待ち”, “完了”)
Valid Ifは、入力できる値を制限するための設定です。公式ヘルプでも、Valid Ifが値のリストを返す場合にプルダウンが表示されると説明されています。
ValuesとValid Ifの両方へ異なる候補を設定すると、どちらが有効なのか判断しにくくなります。固定候補だけならValues、式で候補を作るならValid Ifというように、設定場所を統一した方が管理しやすくなります。
方法3:別テーブルの列を候補にする
担当者、商品、部署、取引先など、候補が増減する項目はマスタテーブルで管理します。例えば、担当者マスタの氏名列を候補にする場合は、Valid Ifへ次の式を設定します。
担当者マスタ[氏名]
並び順を整えたい場合はSORT関数を使用できます。
SORT(担当者マスタ[氏名])
この方法なら、マスタへ担当者を追加した後に同期することで、プルダウンにも反映できます。ただし、氏名をそのまま保存すると、同姓同名や氏名変更に弱くなります。業務データとして関連付ける場合は、担当者IDをキーにしたRef列も検討してください。
方法4:Suggested valuesで候補を提案する
Suggested valuesは、入力候補を表示しながら、候補にない値の入力も許可したい場合に使用します。公式ヘルプでは、Suggested valuesは入力を強制する制約ではなく、候補以外の値も列タイプとValid Ifの条件を満たせば入力できる仕組みとされています。
| 設定 | 役割 | 候補外の入力 | 向いている例 |
|---|---|---|---|
| Values | 固定候補を登録する | 設定による | 優先度、状態 |
| Valid If | 入力可能な値を制限する | 原則不可 | 商品、担当者、部署 |
| Suggested values | 入力候補を提案する | 可能 | 件名、キーワード、補足分類 |
| Ref | 別テーブルの行と関連付ける | 参照先による | 顧客、商品、社員 |
Allow other valuesの扱いに注意する
Allow other valuesを有効にすると、用意された選択肢以外の値を入力できる場合があります。しかし、表記揺れを防ぐ目的でEnumを設定したのに自由入力を許可すると、統一の効果が薄れます。
また、AppSheetデータベースではAllow other valuesの利用に制限があり、事前定義されていない値を保存するとエラーにつながる可能性が公式ヘルプで案内されています。データソースにAppSheetデータベースを使用している場合は、特に注意してください。
連動するプルダウンを作る方法
カテゴリを選ぶと、そのカテゴリに属する商品のみが次のプルダウンへ表示される仕組みを、連動プルダウンや依存型プルダウンと呼びます。商品数や拠点数が多いアプリでは、候補を絞り込むことで選択ミスを減らせます。
準備するテーブル
例として、商品マスタに次の列を用意します。
| 商品ID | カテゴリ | 商品名 | 使用中 |
|---|---|---|---|
| P001 | 事務用品 | コピー用紙 | TRUE |
| P002 | 事務用品 | ボールペン | TRUE |
| P003 | 清掃用品 | 洗剤 | TRUE |
| P004 | 清掃用品 | モップ | FALSE |
カテゴリ列の候補を設定する
入力テーブルのカテゴリ列をEnumにし、Valid Ifへ次の式を設定します。
SORT(UNIQUE(商品マスタ[カテゴリ]))
UNIQUE関数で重複するカテゴリ名を一つにまとめ、SORT関数で並び順を整えます。
商品名列をカテゴリで絞り込む
商品名列のValid Ifには、現在の入力行で選択したカテゴリと一致し、使用中の商品だけを返す式を設定します。
SORT(SELECT(商品マスタ[商品名], AND([カテゴリ] = [_THISROW].[カテゴリ], [使用中] = TRUE)))
この式では、商品マスタから条件に合う行を探し、その商品名だけをプルダウンに表示します。
- 商品マスタ[商品名]:候補として返す列
- [カテゴリ] = [_THISROW].[カテゴリ]:選択中のカテゴリと一致する行
- [使用中] = TRUE:現在使用している商品のみ
- SORT:候補を並べ替える
AppSheetには、同じ参照用テーブルの列を使うことで連動関係を認識する仕組みもあります。公式ヘルプでも、地域と国のように前の選択内容で次の候補を絞る設定が案内されています。

親の値を変更したときも確認する
連動プルダウンでは、カテゴリを変更した後に、変更前の商品名が残らないかを確認します。新規登録だけでなく、既存行の編集もテストしてください。
- カテゴリで事務用品を選ぶ
- 商品名でコピー用紙を選ぶ
- カテゴリを清掃用品へ変更する
- 商品名の候補と現在値を確認する
- 保存時に不整合が発生しないか確認する

👑連動プルダウンは候補を減らすだけではありませんの。似た商品や別部署の項目を誤って選ぶ事故も防ぎやすくなりますわ。
実務で使えるEnum・EnumListの設定例
タスク管理のステータス
タスクの進捗はEnumにします。候補は多くしすぎず、各状態の意味を決めます。
| 選択肢 | 業務上の意味 |
|---|---|
| 未着手 | 担当者は決まっているが作業を始めていない |
| 進行中 | 担当者が作業を進めている |
| 確認待ち | 上司や依頼者の確認を待っている |
| 完了 | 必要な確認を含めて作業が終了している |
「保留」と「確認待ち」の違いが曖昧な場合は、選択肢を増やす前に社内ルールを整理します。列の設定だけでは、判断基準までは統一できません。
設備点検の不具合内容
一つの設備で複数の問題が見つかる可能性があるため、不具合内容はEnumListが向いています。
- 異音
- 振動
- 漏れ
- 破損
- 汚れ
- 動作不良
ただし、不具合ごとに写真、対応期限、修理担当者を記録したい場合は、EnumList一列へまとめるよりも「点検結果」と「不具合明細」を別テーブルに分けた方が管理しやすくなります。
在庫管理の入出庫区分
入庫、出庫、棚卸調整は同時に複数選択しないためEnumを使用します。区分によって数量の増減を計算する場合、選択肢の表記が式と完全に一致している必要があります。
IF([入出庫区分] = “入庫”, [数量], -[数量])
選択肢を「出庫」から「払出」に変更すると、既存の式やBotの条件が動かなくなる可能性があります。表示名を変更する前に、アプリ内でその値を使用している式、Slice、Automationを確認してください。
担当者や商品はRefも検討する
担当者名や商品名を単なるEnumで保存すると、後から名称が変わった際に過去データとの関係が分かりにくくなります。別テーブルの行と関連付けたい項目はRefの方が適している場合があります。
| 管理方法 | 向いているケース | 注意点 |
|---|---|---|
| Enum | 固定された短い候補 | 名称変更や詳細情報との連携に弱い |
| EnumList | 複数のタグや特徴 | 集計が複雑になりやすい |
| Ref | 顧客、商品、社員などのマスタ | キー列とラベル列の設計が必要 |
| EnumListのBase typeをRef | 複数の関連行を選択する | 多対多の管理では中間テーブルも検討する |

よくある失敗と解決方法
選択肢がプルダウンに表示されない
候補が表示されない場合は、Values、Valid If、Base type、式の戻り値を順番に確認します。
- TypeがEnumまたはEnumListになっているか
- Valuesに候補が登録されているか
- Valid Ifがリストを返しているか
- Base typeと候補の値が一致しているか
- 参照しているテーブル名や列名が正しいか
- アプリを保存して同期したか
SELECT関数の条件が厳しすぎて、該当行が一件もないケースもあります。式を複雑にする前に、商品マスタ[商品名]のような単純な列参照で候補が表示されるか確認すると、原因を切り分けやすくなります。
Enumなのに自由入力できてしまう
Allow other valuesやSuggested valuesの設定を確認してください。入力を候補内に限定したい場合は、Valid Ifで許可リストを設定し、候補外の値を許可しない構成にします。
選択肢を削除したら既存データを編集できない
運用中にValuesやマスタから候補を削除すると、過去の行には現在の許可リストに存在しない値が残ります。その行を編集した際に、保存エラーや再選択が必要になる場合があります。
使わなくなった選択肢はすぐ削除せず、「使用中」列を設けて新規入力の候補から除外する方法が安全です。過去データでは旧名称を保持し、新しい登録では選べない状態にします。
EnumListを等号で比較している
EnumListは複数の値を持つリストです。次のような等号による判定では、期待どおりにならない場合があります。
[対応方法] = “電話”
特定の値を含むか調べる場合はIN関数を使用します。
IN(“電話”, [対応方法])
同じ表示名の商品を見分けられない
商品名だけを候補にすると、同名商品や容量違いの商品を区別できません。商品マスタに商品IDを設け、ラベルとして「商品名・規格・容量」を組み合わせた列を表示すると選びやすくなります。
| 分かりにくい表示 | 改善した表示 |
|---|---|
| コピー用紙 | コピー用紙 A4 500枚 |
| 洗剤 | 業務用洗剤 5L |
| ボールペン | 油性ボールペン 黒 0.7mm |
選択肢を増やしすぎて探せない
数十件から数百件の候補を一つのプルダウンへ表示すると、入力者が探すだけで時間を使います。カテゴリで絞り込む、使用中の候補だけを表示する、担当部署ごとに候補を変えるなどの対策が必要です。
候補が非常に多い場合は、EnumではなくRefを使い、検索しやすいラベル列を設定する方が運用しやすいこともあります。


👑選択肢を増やすほど正確になるとは限りませんの。利用者が迷わず判断できる数と表記に絞ることが、入力時間の短縮につながりますわ。
導入前に確認したい設計ポイント
自由入力を禁止してよい項目か
Enumは表記を統一できますが、現場で発生する例外をすべて想定できるとは限りません。「その他」を設けて補足欄へ詳細を入力させる方法と、候補外入力を許可する方法を比較してください。
選択肢を誰が管理するか
Valuesへ直接登録した候補は、基本的にアプリ編集者が変更します。現場の管理者が店舗、商品、担当者などを増やす必要がある場合は、マスタテーブルを作り、アプリから追加できる構成にします。
過去データをどう扱うか
選択肢の名称変更や統合を行うと、過去データと新しいデータが別の値として集計される可能性があります。変更前に、既存データを書き換えるのか、旧名称を残すのか、集計式でまとめるのかを決めてください。
人間が確認すべき部分を残す
AIを使えば、業務内容からEnum候補やValid Ifの式案を作ることはできます。しかし、申請結果、在庫区分、点検判定などの意味は会社ごとに異なります。
- AIに任せやすい部分:候補案の整理、式のたたき台、テストケースの作成
- 人間が確認する部分:業務用語の定義、権限、例外処理、既存データへの影響
AIが作った式は、テストアプリや少量のサンプルデータで確認してから本番へ反映します。
Enum・EnumListが向いているケースと向いていないケース
向いているケース
- 入力時の表記揺れを減らしたい
- 状態や区分を決められた候補から選ばせたい
- スマートフォンで文字入力する時間を減らしたい
- 選択した値をSliceやAutomationの条件に使いたい
- カテゴリに応じて候補を絞り込みたい
- 複数のタグや特徴を一つの行へ記録したい
別の設計も検討した方がよいケース
- 候補が数百件以上あり検索性が必要
- 選択した項目ごとに数量や日付を記録したい
- 複数選択した値を個別に集計、更新、削除したい
- 顧客や商品など、別テーブルとの関係を維持したい
- 候補の追加や変更履歴を厳密に管理したい
特に、EnumListで選択した各項目に数量や担当者を持たせたい場合は、一つの列へまとめず、明細テーブルを作る方が適しています。

👑入力画面の簡単さだけで決めず、保存後に検索、集計、修正しやすいかまで確認すると、作り直しを減らせますわ。
よくある質問
EnumとTextは何が違いますか?
Textは利用者が文字を自由入力する列です。Enumは用意された候補から一つを選ぶ列です。ステータスや区分など、表記を統一したい項目にはEnumが向いています。
EnumListでは何個まで選択できますか?
複数選択できますが、候補数や選択数が多すぎると入力、表示、集計が複雑になります。多数の項目を個別管理したい場合は、明細テーブルへの分割も検討してください。
プルダウンの候補をGoogleスプレッドシートから取得できますか?
できます。候補を保存したマスタテーブルをAppSheetへ追加し、Valid Ifへ「テーブル名[列名]」の形式で設定します。追加や変更が多い候補に向いています。
Enumの選択肢を後から変更しても大丈夫ですか?
変更できますが、既存データや条件式への影響を確認してください。選択肢の名称を変更すると、過去の値と新しい値が別々に集計される場合があります。
EnumとRefはどちらを使えばよいですか?
優先度や状態などの固定候補はEnum、顧客や商品など別テーブルの行と関連付ける項目はRefが基本です。名称変更や詳細情報との連携が必要ならRefを検討してください。
EnumListの値が条件式で正しく判定されません
EnumListはリストとして保存されるため、特定の値が含まれるかをIN関数で判定します。例えば、IN(“緊急”, [タグ])のように記述します。
カテゴリを変更しても前の商品が残る場合はどうしますか?
商品のValid Ifが現在のカテゴリを参照しているか確認し、新規登録だけでなく既存行の編集でもテストしてください。親項目を変更した後に、子項目を再選択させる運用も必要です。
候補外の値も入力できるようにできますか?
Suggested valuesやAllow other valuesを利用する方法があります。ただし、表記揺れが再発しやすくなります。AppSheetデータベースでは制限もあるため、使用中のデータソースと最新の公式情報を確認してください。
おすすめAIツール
EnumやEnumListの候補整理、Valid If、SELECT、SORT、UNIQUEなどを組み合わせた式の作成には、ChatGPTを補助的に利用できます。「商品マスタから、選択中のカテゴリと一致する使用中の商品だけを表示したい」のように、テーブル名、列名、条件を具体的に伝えると式案を作りやすくなります。
ただし、AIは実際のアプリ構造や保存済みデータを自動で理解するわけではありません。生成された式をそのまま本番へ設定せず、列タイプ、戻り値、候補がゼロ件の場合、既存データ編集時の挙動を確認してください。複雑な式を一度に作るより、列参照、絞り込み、並べ替えの順に機能を追加するとエラーの原因を見つけやすくなります。
関連記事
- AppSheetの始め方|Googleスプレッドシートからアプリを作る手順
- 小規模事業者向けAppSheet在庫管理の導入手順|7日間の試験運用ロードマップ
- AppSheetで日報アプリを作る方法|写真付き報告も簡単
- AppSheetでユーザーごとに画面を切り替える方法|USEREMAIL関数とSliceの設定
- AppSheetのセキュリティフィルター設定方法|ユーザーごとに表示データを制限する手順
まとめ
- Enumは一つの候補、EnumListは複数の候補を選択する列タイプ
- 固定候補はValues、動的な候補はValid Ifやマスタテーブルで管理する
- Suggested valuesは候補の提案、Valid Ifは入力可能な値の制限に使用する
- 連動プルダウンやRefを使い分け、入力後の検索と集計まで考えて設計する
EnumとEnumListを適切に設定すると、スマートフォンでの入力時間を短縮しながら、表記揺れや選択ミスを減らせます。最初はステータスや優先度など、候補が少なくルールが明確な一項目から試してください。固定候補で基本動作を確認した後、マスタ連動やカテゴリ別の絞り込みを追加すると、問題が起きた場合も原因を切り分けやすくなります。



