Google Sheets Custom Functions

March 14, 2026 · View on GitHub

CI License: MIT Node.js TypeScript Google Apps Script

English

Google スプレッドシート向けの日本語データバリデーションカスタム関数 — メールアドレス、電話番号、郵便番号。

apps-script-fleet テンプレートから生成。

提供するカスタム関数

関数説明
=IS_VALID_EMAIL(value)メールアドレスの形式を検証=IS_VALID_EMAIL(A1)
=IS_VALID_PHONE_JP(value)日本の電話番号形式を検証(固定・携帯・フリーダイヤル)=IS_VALID_PHONE_JP(B1)
=IS_VALID_POSTAL_CODE(value)日本の郵便番号形式を検証(ハイフンあり・なし)=IS_VALID_POSTAL_CODE(C1)

使用例

スプレッドシートのセルに以下のように入力:

=IS_VALID_EMAIL("user@example.com")      -> TRUE
=IS_VALID_EMAIL("invalid")               -> FALSE

=IS_VALID_PHONE_JP("03-1234-5678")       -> TRUE
=IS_VALID_PHONE_JP("090-1234-5678")      -> TRUE
=IS_VALID_PHONE_JP("0120-123-456")       -> TRUE
=IS_VALID_PHONE_JP("1234567890")         -> FALSE

=IS_VALID_POSTAL_CODE("123-4567")        -> TRUE
=IS_VALID_POSTAL_CODE("1234567")         -> TRUE
=IS_VALID_POSTAL_CODE("123-456")         -> FALSE

サンプル Google Sheets

カスタム関数はコンテナバインドスクリプトでのみ動作します。Apps Script プロジェクトはスプレッドシート内から作成する必要があります。以下の dev/prod スクリプトはこのスプレッドシートに紐づいています:

リソースリンク
Google Sheetscustom-functions-sample
Apps Script (dev)custom-functions-dev
Apps Script (prod)custom-functions-prod

クイックスタート

1. Google Sheets でスプレッドシートを作成

新しいスプレッドシートを Google Sheets で作成します。カスタム関数はこのスプレッドシートで利用可能になります。

2. コンテナバインドスクリプトの作成

スプレッドシートを開く → 拡張機能Apps Script。スプレッドシートに紐づいた Apps Script プロジェクトが作成されます。プロジェクト URL(https://script.google.com/d/<scriptId>/edit)から scriptId をコピーします。

3. clasp の設定

.clasp-dev.json.clasp-prod.jsonscriptId を設定:

{ "scriptId": "YOUR_SCRIPT_ID_HERE" }

dev / prod で同じスプレッドシートを共有できます。同一の scriptId を使うか、環境ごとに分けるかは任意です。

4. CI/CD シークレットの設定

CLASPRC_JSON シークレットを GitHub リポジトリまたは Org レベルに設定。

5. デプロイ

pnpm run deploy で dev 環境にデプロイ。カスタム関数は紐づけたスプレッドシートで利用可能になります。

プロジェクト構成

src/
├── index.ts          # GAS エントリポイント(IS_VALID_EMAIL 等)— export キーワードなし
└── validators.ts     # バリデーションロジック(純粋関数)
test/
└── validators.test.ts  # ユニットテスト(カバレッジ 100%)

開発

コマンド説明
pnpm run checklint + typecheck + test(全チェック)
pnpm run buildTypeScript をバンドルして dist/ に出力
pnpm run testJest(カバレッジ付き)
pnpm run test -- --watchJest ウォッチモード
pnpm run deploycheck → build → dev にデプロイ
pnpm run deploy:prodcheck → build → 本番にデプロイ

CI/CD

CI は全 push と PR で実行。CD は dev または main へのマージで自動デプロイ — GitHub Actions の environment 別 secrets/variables で設定済み。詳細は apps-script-fleet のドキュメントを参照。

注意事項

  • src/index.ts の関数に export キーワードは付けない(GAS ランタイムは ES モジュール構文を認識できない)
  • src/index.ts はテストカバレッジ対象外(GAS グローバルが Node.js で実行不可のため)
  • カバレッジ閾値: 全メトリクス 80%(jest.config.json で変更可)

ライセンス

MIT