AppSheetで「複数選択可能なフィールド(EnumList)」を使っていると、次のようなニーズが出てきませんか?
「A部門の人にはA関連の項目だけを選ばせたい」
「ステータスが完了のときだけ、特定の項目を除外したい」
「ユーザーの役割によって選択肢を変えたい」
この記事では、EnumListの「選択肢」を条件に応じて変化させる方法を、例とともに分かりやすく解説します。
想定シナリオ
タスク
テーブルにある担当部署
列(EnumList)で複数部署を選ばせる- ただし、ユーザーの所属(
ユーザー[部署]
)によって選べる値を制限したい
基本設定:EnumList列の作成
- テーブル:
タスク
- 列:
完了部署
(Type: EnumList / Base Type: Text) Allow other values
: 必要に応じて ON(ユーザー入力を許可)Values
に式を指定(次のセクション参照)
例1:所属部署によって選択肢を制御する
目的: ログインユーザーが属する部署で選択候補を変更したい
テーブル:ユーザー
メールアドレス | 氏名 | 部署 |
---|---|---|
yamada@yourcorp.jp | 山田 太郎 | 開発部 |
tanaka@yourcorp.jp | 田中 花子 | 営業部 |
suzuki@yourcorp.jp | 鈴木 次郎 | 開発部 |
sato@yourcorp.jp | 佐藤 三郎 | 管理部 |
SWITCH(
ANY(SELECT(ユーザー[部署], [メール] = USEREMAIL())),
"開発部", LIST("開発", "運用", "インフラ"),
"営業部", LIST("営業"),
LIST("総務", "労務", "経理")
)
🔍 この式は「ユーザー」テーブルと連携して、現在のログインユーザーの部署に応じてEnumListの選択肢を出し分けます。
例2:ある条件(例:タスクの種類)によってリストを制御
IF(
[タスク種別] = "点検", LIST("点検部", "品質管理部"), LIST("生産部", "工程管理部")
)
🔍 別フィールドの値に応じて選択肢を変更できます。
応用例:ログインユーザーが属する部署のメンバーを選ばせる
SELECT(ユーザー[氏名], [部署] = ANY(SELECT(ユーザー[部署], [メール] = USEREMAIL())))
よくあるつまずきポイント
症状 | 原因 | 解決策 |
---|---|---|
値が表示されない | Valid_If の式がリストになっていない | LIST() または SELECT() で返す |
「Allow other values」が効かない | 無効にされている | Allow other values を ON にする |
重複が発生 | 複数の条件で同じ値を追加している | UNIQUE() を使って重複を除去する |
Use Case
条件 | 式 |
---|---|
特定の値だけ除外したい | SELECT(..., NOT(IN(...))) |
特定条件のときだけ追加したい | IF(..., [選択肢], LIST()) |
常に一定の値を追加したい | [値] + LIST("常時含めたい項目") |
関連してよく使う項目
技術 | 説明 |
---|---|
SELECT() | リストを条件で取得 |
IF() / SWITCH() | 条件に応じた選択肢の切り替え |
IN() / NOT() | 含む/含まないを判定 |
[_THISROW] | 現在行の値に基づいた制御が可能 |