「AppSheetでアプリを作りたいけど、どんな関数があるの?」
「Excelとは違うの?」
「具体的にどう書けばいいかわからない」
Googleが提供するAppSheet(アップシート)は、ノーコードでビジネスアプリを作成できる強力なプラットフォームです。
その核となるのが「関数(式)」機能で、これを理解することで業務を大幅に自動化できます。
この記事では、AppSheetでよく使われる関数について、基本的な使い方から実践的な活用例まで、具体的なコード例を交えながらわかりやすく解説します。
AppSheet関数とは

基本的な概念
AppSheetの関数は「式(Expressions)」と呼ばれ、アプリの動作を制御するための命令文です。
データの表示、計算、条件分岐、自動化など、あらゆる場面で使用されます。
Excelとの違い
共通点
- 基本的な構文(IF、SUM、COUNTなど)が似ている
- 論理演算子や比較演算子の使い方が同じ
- 関数をネストして複雑な処理も可能
相違点
| 項目 | Excel | AppSheet |
|---|---|---|
| 対象 | セルの値 | データベースの列、アプリの状態 |
| 更新 | ファイル保存時 | リアルタイム |
| 用途 | 計算メイン | 表示制御、自動化、ワークフロー |
| データ連携 | 限定的 | クラウドデータベースと直結 |
AppSheet関数の用途
データ表示の制御
- 条件に応じた表示・非表示
- 動的な計算結果の表示
- フォーマットされた日付・数値表示
ワークフローの自動化
- 承認フローの条件設定
- 通知の自動送信
- データの自動更新
ユーザーエクスペリエンスの向上
- 直感的なナビゲーション
- パーソナライズされた表示
- エラー防止の仕組み
基本的な関数カテゴリ

論理関数(条件分岐)
条件に応じて異なる処理を実行する関数群です。
IF関数
基本構文
IF(条件, 真の場合の値, 偽の場合の値)
実用例1:在庫管理
IF([在庫数] <= 0, "在庫切れ", "在庫あり")
用途 在庫数をチェックして、0以下の場合は「在庫切れ」、それ以外は「在庫あり」と表示。
実用例2:売上評価
IF([今月売上] >= [目標売上], "目標達成", "目標未達")
実用例3:年齢による分類
IF([年齢] >= 18, "成人", "未成年")
IFS関数
基本構文
IFS(条件1, 値1, 条件2, 値2, 条件3, 値3, ...)
実用例1:成績評価
IFS(
[点数] >= 90, "優",
[点数] >= 80, "良",
[点数] >= 70, "可",
[点数] >= 60, "不可",
"再試験"
)
実用例2:配送料計算
IFS(
[購入金額] >= 10000, 0,
[購入金額] >= 5000, 300,
[購入金額] >= 3000, 500,
800
)
SWITCH関数
基本構文
SWITCH(値, ケース1, 結果1, ケース2, 結果2, ..., デフォルト値)
実用例:ステータス表示
SWITCH(
[ステータス],
"新規", "? 新規受付",
"進行中", "⚡ 作業中",
"完了", "✅ 完了",
"保留", "⏸️ 保留中",
"❓ 不明"
)
日付・時刻関数
日付や時刻の操作と計算を行う関数群です。
現在日時取得関数
TODAY() – 今日の日付
TODAY()
結果例:2025-01-20
NOW() – 現在日時
NOW()
結果例:2025-01-20 14:30:25
実用例:有効期限チェック
IF([有効期限] < TODAY(), "期限切れ", "有効")
日付計算関数
経過日数の計算
TODAY() - [開始日]
営業日の計算
WORKDAY([開始日], [日数])
実用例:プロジェクト進捗
IFS(
[完了日] < [予定完了日], "早期完了",
[完了日] = [予定完了日], "予定通り",
[完了日] > [予定完了日], "遅延",
TODAY() > [予定完了日], "遅延中",
"進行中"
)
日付要素抽出関数
年月日の個別取得
YEAR([日付]) // 年を取得
MONTH([日付]) // 月を取得
DAY([日付]) // 日を取得
HOUR([時刻]) // 時を取得
MINUTE([時刻]) // 分を取得
実用例:月次レポート
IF(MONTH([売上日]) = MONTH(TODAY()), [売上金額], 0)
文字列関数
テキストデータの操作と加工を行う関数群です。
文字列結合関数
CONCATENATE – 複数文字列の結合
CONCATENATE([姓], " ", [名])
&演算子での結合
[姓] & " " & [名]
実用例:顧客情報表示
[会社名] & " - " & [部署] & " " & [役職] & " " & [氏名]
結果例:「株式会社ABC – 営業部 課長 田中太郎」
文字列抽出関数
LEFT – 左から指定文字数
LEFT([商品コード], 3)
RIGHT – 右から指定文字数
RIGHT([電話番号], 4)
MID – 指定位置から指定文字数
MID([商品コード], 4, 2)
実用例:商品カテゴリの抽出
SWITCH(
LEFT([商品コード], 2),
"EL", "電子機器",
"CL", "衣料品",
"FD", "食品",
"その他"
)
文字列検索・置換関数
FIND – 文字列の位置検索
FIND("@", [メールアドレス])
SUBSTITUTE – 文字列置換
SUBSTITUTE([電話番号], "-", "")
実用例:ドメイン名抽出
RIGHT([メールアドレス], LEN([メールアドレス]) - FIND("@", [メールアドレス]))
数値・計算関数
数値の計算や統計処理を行う関数群です。
基本計算関数
SUM – 合計
SUM(SELECT(売上[金額], [担当者] = [_THIS].[名前]))
AVERAGE – 平均
AVERAGE(SELECT(評価[点数], [商品ID] = [_THIS].[ID]))
MAX/MIN – 最大値・最小値
MAX(SELECT(注文[数量], [商品ID] = [_THIS].[ID]))
数値処理関数
ROUND – 四捨五入
ROUND([金額] * 1.1, 0) // 消費税込み計算
INT – 整数部分
INT([時間] / 8) // 勤務日数計算
MOD – 余り
MOD([番号], 10) // 下一桁を取得
実用例:売上ランク計算
IFS(
[月間売上] >= 1000000, "S",
[月間売上] >= 500000, "A",
[月間売上] >= 200000, "B",
"C"
)
リスト・参照系関数

複数のデータを操作し、他のテーブルとの連携を行う関数群です。
SELECT関数
基本構文
SELECT(テーブル[列名], 条件)
実用例1:営業部の社員一覧
SELECT(社員[名前], [部署] = "営業部")
実用例2:今月の売上データ
SELECT(売上[金額], MONTH([売上日]) = MONTH(TODAY()))
実用例3:条件付きリスト作成
SELECT(商品[商品名], [カテゴリ] = [_THIS].[希望カテゴリ])
LOOKUP関数
基本構文
LOOKUP(検索値, "テーブル名", "検索列", "取得列")
実用例1:社員情報の取得
LOOKUP([担当者ID], "社員マスタ", "社員ID", "メールアドレス")
実用例2:商品価格の取得
LOOKUP([商品コード], "商品マスタ", "コード", "単価")
実用例3:関連データの自動入力
LOOKUP([顧客ID], "顧客", "ID", "会社名")
ANY関数とリスト操作
ANY – リストから1件取得
ANY(SELECT(注文[注文日], [顧客ID] = [_THIS].[ID]))
COUNT – 件数カウント
COUNT(SELECT(売上[ID], [担当者] = [_THIS].[名前]))
実用例:最新注文情報
ANY(
SELECT(
注文[注文日],
AND([顧客ID] = [_THIS].[ID], [注文日] = MAX(SELECT(注文[注文日], [顧客ID] = [_THIS].[ID])))
)
)
IN関数
基本構文
IN(値, リスト)
実用例1:権限チェック
IN(USEREMAIL(), SELECT(管理者[メール], [有効] = TRUE))
実用例2:カテゴリフィルタ
IN([商品カテゴリ], LIST("電子機器", "家具", "雑貨"))
UI制御・ユーザー情報関数

アプリの表示制御とユーザー情報の取得を行う関数群です。
ユーザー情報取得関数
USEREMAIL() – ユーザーメール
USEREMAIL()
USERNAME() – ユーザー名
USERNAME()
実用例:個人データフィルタ
SELECT(タスク[タイトル], [担当者メール] = USEREMAIL())
コンテキスト情報関数
CONTEXT(“View”) – 現在のビュー
CONTEXT("View")
CONTEXT(“Device”) – デバイス情報
CONTEXT("Device")
実用例:ビューに応じた表示制御
IF(CONTEXT("View") = "詳細ビュー", [詳細説明], [概要])
データ検証関数
ISBLANK() – 空欄チェック
ISBLANK([必須項目])
ISNOTBLANK() – 非空欄チェック
ISNOTBLANK([オプション項目])
実用例:入力必須チェック
IF(
OR(ISBLANK([名前]), ISBLANK([メール]), ISBLANK([電話番号])),
"必須項目が未入力です",
"入力完了"
)
ナビゲーション関数
LINKTOFORM() – フォーム遷移
LINKTOFORM("新規注文", "顧客ID", [ID])
LINKTOROW() – 詳細画面遷移
LINKTOROW([ID], "注文詳細")
実用例:動的リンク作成
LINKTOFORM(
"商品登録",
"カテゴリ", [選択カテゴリ],
"登録者", USEREMAIL()
)
実践的な活用例
営業管理アプリ
見込み顧客の優先度判定
IFS(
AND([予算] >= 1000000, [決裁者接触] = "済み"), "A(最優先)",
AND([予算] >= 500000, [決裁者接触] = "済み"), "B(優先)",
[予算] >= 500000, "C(要フォロー)",
"D(低優先)"
)
次回アクション期限の表示
IF(
[最終接触日] + 7 < TODAY(),
"要連絡(" & (TODAY() - [最終接触日]) & "日経過)",
"期限内"
)
在庫管理アプリ
発注アラート
IF(
[現在庫] <= [最小在庫数],
"? 発注必要(残り" & [現在庫] & "個)",
IF(
[現在庫] <= [最小在庫数] * 1.5,
"⚠️ 在庫少(残り" & [現在庫] & "個)",
"✅ 在庫充分"
)
)
月次在庫回転率
ROUND(
SUM(SELECT(出庫[数量], MONTH([出庫日]) = MONTH(TODAY()))) /
AVERAGE(SELECT(在庫[数量], MONTH([更新日]) = MONTH(TODAY()))),
2
)
プロジェクト管理アプリ
進捗状況の自動判定
IFS(
[完了日] <> "", "完了",
TODAY() > [予定完了日], "遅延",
(TODAY() - [開始日]) / ([予定完了日] - [開始日]) >= 0.8, "終盤",
(TODAY() - [開始日]) / ([予定完了日] - [開始日]) >= 0.4, "中盤",
"序盤"
)
チーム負荷の可視化
COUNT(SELECT(タスク[ID], AND([担当者] = [_THIS].[名前], [ステータス] <> "完了")))
経費精算アプリ
承認フローの条件
IF(
[金額] >= 50000,
"部長承認必須",
IF(
[金額] >= 10000,
"課長承認必須",
"自動承認"
)
)
領収書チェック
IF(
AND(ISNOTBLANK([領収書]), [金額] >= 1000),
"✅ 承認可能",
"❌ 領収書が必要です"
)
よくあるエラーと対処法

エラー1:「式が無効です」
原因
- 構文エラー(括弧の不一致、カンマの位置間違いなど)
- 存在しない列名の参照
- データ型の不一致
対処法
// ❌ 間違い
IF([金額] >= 10000 "高額", "通常")
// ✅ 正しい
IF([金額] >= 10000, "高額", "通常")
エラー2:「循環参照エラー」
原因 列Aが列Bを参照し、列Bが列Aを参照している状態
対処法
// ❌ 循環参照
列A: [列B] + 100
列B: [列A] * 2
// ✅ 修正版
列A: [基準値] + 100
列B: [列A] * 2
エラー3:「リストが空です」
原因 SELECT関数で条件に合うデータが見つからない
対処法
// ❌ エラーの可能性
ANY(SELECT(売上[金額], [担当者] = [名前]))
// ✅ 安全な書き方
IF(
COUNT(SELECT(売上[金額], [担当者] = [名前])) > 0,
ANY(SELECT(売上[金額], [担当者] = [名前])),
0
)
パフォーマンス最適化のコツ
効率的なSELECT関数の使用
❌ 非効率な例
COUNT(SELECT(全データ[ID], [カテゴリ] = "A")) +
COUNT(SELECT(全データ[ID], [カテゴリ] = "B")) +
COUNT(SELECT(全データ[ID], [カテゴリ] = "C"))
✅ 効率的な例
COUNT(SELECT(全データ[ID], IN([カテゴリ], LIST("A", "B", "C"))))
計算式の最適化
❌ 重複計算
IF(
COUNT(SELECT(注文[ID], [顧客ID] = [_THIS].[ID])) > 10,
COUNT(SELECT(注文[ID], [顧客ID] = [_THIS].[ID])) * 0.1,
0
)
✅ 変数使用(仮想列での計算)
// 仮想列[注文件数]: COUNT(SELECT(注文[ID], [顧客ID] = [_THIS].[ID]))
IF([注文件数] > 10, [注文件数] * 0.1, 0)
まとめ
AppSheetの関数は、ノーコードアプリ開発の核となる重要な機能です。
この記事のポイント
基本関数の理解
- IF・IFS・SWITCHによる条件分岐
- TODAY・NOWによる日付処理
- CONCATENATE・LEFT・RIGHTによる文字列操作
- SUM・COUNT・AVERAGEによる集計処理
データ連携機能
- SELECT関数による条件付きデータ取得
- LOOKUP関数による他テーブル参照
- IN関数による包含チェック
- ANY関数によるリスト処理


コメント