AppSheetでは、別のテーブルを参照するためにRef型をよく使います。
しかし、Ref型を設定した際に「値が入っていない」「正しく選択肢が表示されない」といったトラブルが起きることがあります。
その原因は多くの場合、LabelとKeyの扱い方にあります。この記事では、Ref型でLabelをうまく使うための正しい設定方法と、よくあるつまずきポイントを解説します。
前提と課題
以下のような構成を考えてみましょう
- 「顧客テーブル(Customers)」では、
CustomerID
にUNIQUEID()
を使って一意なKeyを生成 - 「注文テーブル(Orders)」では、
CustomerName
(例:「佐藤一郎」)を選択、表示させたい

Customers 顧客テーブル
CustomerID (Key) | CustomerName (Label) |
---|---|
a1b2c3d4 | 佐藤一郎 |
e5f6g7h8 | 鈴木花子 |
Orders 注文テーブル
OrderID (Key) | Customer (ref) | Customer (表示) |
---|---|---|
aa11bb22 | a1b2c3d4 | 佐藤一郎 |
cc33dd44 | e5f6g7h8 | 鈴木花子 |
正しい設定方法
① 参照先テーブル(例:Customers)の設定
※一般的にマスターテーブルと呼ばれます。
② 参照元テーブル(例:Orders)の設定
この設定でAppSheetが自動的に、Label(CustomerName)を選択肢として表示されます。値はKey (CustomerID)が保持されます。
▼ 顧客を選択
└ 佐藤一郎
└ 鈴木花子☝️Ref型では、内部的にはKey(CustomerID)が保存されますが、ユーザーにはLabel(CustomerName)が表示されます。
保存される値は CustomerID
ですが、ユーザーには CustomerName
が見えるのでわかりやすいですね。
よくある間違いと注意点
次のようなケースはうまく動作しません
「CustomerNameを見て自動でRefを設定してほしい」と思いがちですが、Ref型はKeyを使ってLabelを参照する仕組みです。
App Formulaで自動変換する方法もありますが、
など実運用には向きません。
解決策:Ref型列を別に作るのが安全!
最も確実なのは、以下のようにRef型列とLabel列を分けて管理する方法です。
システムを作る上で非常に重要な考え方になります。
ExcelやSpredSheetで運用していた時には、顧客名が入った状態で運用していたかと思います。
こうしたファイルをAppSheetに移行する際には、データを整備する必要があります。
Customer
sがなければ作成- CustomerIDを設定(Key)
CustomerName
(Label)を設定- Ordersに
Customer
を追加 Customer
列(Ref)を設定CustomerName
からKeyを変換して、Customer
列に明示的にセット
この変換・セット処理は、以下の方法である程度支援できます
- AppSheet Bot
- Google Apps Script(GAS)
- SpreadSheetのVLOOKUP
まとめ
Ref型を正しく使うためには、以下の点を押さえておきましょう
この仕組みを理解すれば、AppSheetでのデータ参照がぐっと安定します。システムの拡張性や保守性も向上するので、ぜひマスターしましょう!