AppSheet関数一覧ガイド|よく使う関数と実例で理解する自動化の第一歩

プログラミング・IT

「AppSheetでアプリを作りたいけど、どんな関数があるの?」
「Excelとは違うの?」
「具体的にどう書けばいいかわからない」

Googleが提供するAppSheet(アップシート)は、ノーコードでビジネスアプリを作成できる強力なプラットフォームです。

その核となるのが「関数(式)」機能で、これを理解することで業務を大幅に自動化できます。

この記事では、AppSheetでよく使われる関数について、基本的な使い方から実践的な活用例まで、具体的なコード例を交えながらわかりやすく解説します。

スポンサーリンク

AppSheet関数とは

基本的な概念

AppSheetの関数は「式(Expressions)」と呼ばれ、アプリの動作を制御するための命令文です。

データの表示、計算、条件分岐、自動化など、あらゆる場面で使用されます。

Excelとの違い

共通点

  • 基本的な構文(IF、SUM、COUNTなど)が似ている
  • 論理演算子や比較演算子の使い方が同じ
  • 関数をネストして複雑な処理も可能

相違点

項目ExcelAppSheet
対象セルの値データベースの列、アプリの状態
更新ファイル保存時リアルタイム
用途計算メイン表示制御、自動化、ワークフロー
データ連携限定的クラウドデータベースと直結

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関数によるリスト処理

コメント

タイトルとURLをコピーしました