Google Apps Script(GAS)アプリケーションの開発において、claspツールを使用すると、VSCodeなどのローカル環境からコードを管理・デプロイできます。この記事では、claspを使ったGASアプリのデプロイ方法を詳しく解説します。
1. claspによるデプロイの基本
デプロイとは
GASアプリのデプロイとは、スクリプトを実行可能な状態で公開することです。ウェブアプリケーション、APIエンドポイント、Googleワークスペースのアドオンなど、様々な形式でデプロイできます。
前提条件
デプロイの前に以下の準備が必要です:
- claspのインストール: npm install -g @google/clasp
- Googleアカウントでのログイン: clasp login
- プロジェクトの作成または既存プロジェクトのクローン
- コードの作成とプッシュ: clasp push
2. デプロイの種類と設定
デプロイの主な種類
claspでは以下のデプロイタイプがサポートされています:
- ウェブアプリケーション(Web App)
- ブラウザからアクセス可能なウェブページとして公開
- URLを通じて誰でもアクセス可能(権限設定による)
- APIエンドポイント(API Executable)
- 外部アプリケーションから呼び出し可能なAPIとして公開
- OAuth2認証を使用してアクセス
- アドオン(Add-on)
- Googleドキュメント、スプレッドシートなどに統合されるアドオン
デプロイ設定の指定
appsscript.json
ファイルでデプロイの詳細設定を指定できます:
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"webapp": {
"access": "ANYONE",
"executeAs": "USER_DEPLOYING"
}
}
主な設定オプション:
-
access
: アクセス権限- MYSELF: 自分のみ
- DOMAIN: 同じドメインのユーザーのみ
- ANYONE: ログインユーザーのみ
- ANYONE_ANONYMOUS: 誰でも(認証不要)
- executeAs: 実行ユーザー
- USER_DEPLOYING: デプロイしたユーザーとして実行
- USER_ACCESSING: アクセスしたユーザーとして実行
3. 初回デプロイと更新デプロイの違い
初回デプロイ(新規デプロイ)
初めてアプリをデプロイする場合は、シンプルにclasp deployコマンドを使用します:
clasp deploy --description "初回デプロイ"
このコマンドを実行すると:
- 新しいバージョンが作成されます
- 新しいデプロイIDが生成されます
- 新しいウェブアプリURLが生成されます
出力例:
Created version 1.
Created deployment ID: AKfycbw123456789...
- Web app URL: https://script.google.com/macros/s/AKfycbw123456789.../exec
重要: このデプロイIDは必ずメモしておきましょう。更新時に必要になります。
更新デプロイ(既存デプロイの更新)
コードを変更した後、既存のデプロイを更新する場合は、デプロイIDを指定します:
clasp deploy --deploymentId AKfycbw123456789... --description "機能追加"
このコマンドを実行すると:
- 新しいバージョンが作成されます
- 指定したデプロイIDのデプロイが更新されます
- ウェブアプリのURLは変わりません
出力例:
Created version 2.
Updated deployment ID: AKfycbw123456789...
- Web app URL: https://script.google.com/macros/s/AKfycbw123456789.../exec
重要な違い
clasp deploy
(デプロイID指定なし): 毎回新しいデプロイが作成され、URLも変わる
clasp deploy --deploymentId ID
(デプロイID指定あり): 既存デプロイが更新され、URLは変わらない
実務では、通常は既存のデプロイを更新する方法(--deploymentId
指定)を使用することが多いです。これにより、ユーザーに新しいURLを通知する必要がなく、ブックマークなども有効なままです。
4. デプロイの管理とベストプラクティス
デプロイの一覧表示
現在のデプロイ一覧を確認するには:
clasp list-deployments
出力例:
2 Deployments.
- AKfycbw123... @HEAD (web app)
- AKfycbx456... @12 (web app)
各デプロイの情報が表示されます:
- デプロイID
- 関連付けられたバージョン(@HEADは最新バージョン)
- デプロイタイプ
デプロイの削除
不要になったデプロイを削除するには:
clasp delete-deployment AKfycbw123...
複数環境の管理
開発環境、テスト環境、本番環境など複数の環境を管理する場合:
# 開発環境用のデプロイを更新
clasp deploy --deploymentId DEV_ID --description "開発環境更新"
# テスト環境用のデプロイを更新
clasp deploy --deploymentId TEST_ID --description "テスト環境更新"
# 本番環境用のデプロイを更新
clasp deploy --deploymentId PROD_ID --description "本番環境更新"
デプロイIDの管理
デプロイIDを安全に管理するためのベストプラクティス:
- プロジェクトのREADMEファイルに記録する
- 環境変数として保存する
- チームで共有する設定ファイルに保存する
- デプロイIDに意味のある名前を付ける(メモとして)
例:
デプロイID一覧
開発環境: AKfycbw123...
テスト環境: AKfycbx456...
本番環境: AKfycby789...
特定バージョンのデプロイ
特定のバージョン番号をデプロイする場合:
clasp deploy --deploymentId AKfycbw123... --versionNumber 5 --description "バージョン5のデプロイ"
5. トラブルシューティング
よくある問題と解決策
- デプロイ権限エラー
- 問題: 「You do not have permission to deploy」というエラー
- 解決: clasp loginで再認証、またはプロジェクトの権限を確認
- デプロイIDが見つからない
- 問題: 「Deployment not found」というエラー
- 解決: clasp list-deploymentsで正しいIDを確認
- ウェブアプリにアクセスできない
- 問題: デプロイ後にURLにアクセスすると「アクセス権限がありません」と表示される
- 解決: appsscript.jsonのアクセス設定を確認、適切な権限に変更後、再デプロイ
- 古いバージョンが表示される
- 問題: 更新をデプロイしたのに古い内容が表示される
- 解決: ブラウザのキャッシュをクリア、または?v=timestampパラメータをURLに追加
まとめ
claspを使用したGASアプリのデプロイは、コマンドラインから効率的に行えます。初回デプロイでは新しいデプロイが作成され、更新時には既存のデプロイIDを指定することで同じURLを維持できます。
デプロイIDを適切に管理し、環境ごとに異なるデプロイを作成することで、開発からテスト、本番環境への移行をスムーズに行うことができます。
claspによるデプロイを活用することで、GASアプリケーションの開発・運用ワークフローが大幅に改善され、チーム開発やバージョン管理との統合も容易になります。