1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Apps Script開発をローカルで行うためのツール「clasp」入門

Posted at

はじめに

Google Apps Script(GAS)は、Google製品を拡張・自動化するための強力なスクリプト言語です。通常、GASの開発はブラウザ上のスクリプトエディタで行いますが、バージョン管理の難しさやチーム開発における制約など、いくつかの課題があります。

そこで登場するのが「clasp」(Command Line Apps Script Projects)です。claspはGoogleが提供する公式のコマンドラインツールで、ローカル環境でGASプロジェクトを開発できるようにするものです。

この記事では、claspの基本的な使い方から、実際の開発ワークフローまでを自分自身も初心者なので調べながら解説します。

claspのメリット

公式リポジトリに記載されている情報によると、claspを使った開発には次のようなメリットがあります:

  1. ローカル開発 (🗺️ Develop Locally): お気に入りのエディタやIDEを使用して開発できます。ソースコード管理が可能になり、他の開発者とのコラボレーションがしやすくなります。
  2. デプロイメント管理 (🔢 Manage Deployment Versions): プロジェクトの複数のデプロイメントを作成、更新、表示できます。
  3. コード構造化 (📁 Structure Code): script.google.comの平坦なプロジェクトを自動的にフォルダに変換します。
  4. コマンドライン実行 (➡️ Run Apps Script): コマンドラインから直接Apps Scriptを実行できます。

環境設定

前提条件

  • Node.js 22.0.0以上
  • npmパッケージマネージャー

インストール

まず、npmを使用してclaspをグローバルにインストールします。

npm install -g @google/clasp

TypeScript開発を行う場合は、Google Apps Scriptの型定義ファイルもインストールすることをお勧めします。

npm install --save-dev @types/google-apps-script

これにより、コードエディタでの入力補完や型チェックが可能になり、開発効率が向上します。

インストールが完了したら、Google Apps Script APIを有効にする必要があります。以下のURLにアクセスしてください:
https://script.google.com/home/usersettings

ページが開いたら、「Google Apps Script API」の設定を探し、有効にしてください。これにより、claspがApps Scriptプロジェクトと通信できるようになります。

ログイン

claspを使用するには、自分のGoogleアカウントで認証を行う必要があります。

clasp login

このコマンドを実行すると、ブラウザが開き、Googleアカウントでの認証が求められます。認証が成功すると、ローカルの.clasprc.jsonファイルに認証情報が保存されます。

基本的な使い方

新しいプロジェクトの作成

新しいGASプロジェクトを作成するには:

clasp create-script --title "My New Project"

このコマンドは、新しいApps Scriptプロジェクトを作成し、必要なファイルをローカルに生成します。

オプションでプロジェクトタイプを指定することもできます:

clasp create-script --type sheets --title "Spreadsheet Extension"

利用可能なタイプ:

  • standalone(デフォルト): スタンドアロンスクリプト
  • docs: Google Docsアドオン
  • sheets: Google Sheetsアドオン
  • slides: Google Slidesアドオン
  • forms: Google Formsアドオン
  • webapp: Webアプリケーション
  • api: APIサービス

既存プロジェクトのクローン

既存のApps Scriptプロジェクトをローカルにクローンするには:

clasp clone-script "スクリプトID"

スクリプトIDは、Apps Scriptエディタの「ファイル」>「プロジェクトのプロパティ」で確認できます。また、スクリプトURLからも直接クローンできます:

clasp clone-script "https://script.google.com/d/スクリプトID/edit"

ファイルの同期

ローカルからサーバーへの同期(プッシュ)

ローカルの変更をApps Scriptサーバーに反映させるには:

clasp push

修正を監視して自動的にプッシュするウォッチモードも利用可能です:

clasp push --watch

サーバーからローカルへの同期(プル)

サーバー側の最新バージョンをローカルに取得するには:

clasp pull

特定のバージョンを取得することも可能です:

clasp pull --versionNumber 10

プロジェクトを開く

ブラウザでスクリプトエディタを開くには:

clasp open-script

バージョン管理

バージョンの作成

新しいバージョンを作成するには:

clasp create-version "バージョン説明"

バージョンの一覧表示

プロジェクトのバージョン一覧を表示するには:

clasp list-versions

デプロイメント管理

デプロイメントの作成

スクリプトをデプロイするには:

clasp create-deployment --description "Initial deployment"

特定のバージョンをデプロイすることも可能です:

clasp create-deployment --versionNumber 5 --description "新機能追加"

デプロイメントの一覧表示

デプロイメント一覧を表示するには:

clasp list-deployments

実践的な開発ワークフロー

ここでは、claspを使った実際の開発ワークフローを紹介します。

1. プロジェクトの構造化

claspを使うと、Apps Scriptプロジェクトをフォルダに分けて構造化できます。例えば:

my-gas-project/
├── .clasp.json     # claspの設定ファイル
├── .claspignore    # 無視するファイルの設定
├── appsscript.json # マニフェストファイル
├── src/
│   ├── main.js     # メインの処理
│   ├── utils.js    # ユーティリティ関数
│   └── ui.js       # UI関連の処理
└── tests/
    └── main.test.js # テストコード

TypeScriptを使用する場合は、以下のような構成になります:

my-gas-project/
├── .clasp.json     # claspの設定ファイル
├── .claspignore    # 無視するファイルの設定
├── appsscript.json # マニフェストファイル
├── tsconfig.json   # TypeScript設定ファイル
├── package.json    # npmパッケージ設定
├── src/
│   ├── main.ts     # メインの処理(TypeScript)
│   ├── utils.ts    # ユーティリティ関数
│   └── ui.ts       # UI関連の処理
└── node_modules/
    └── @types/google-apps-script/ # GAS型定義ファイル

2. 無視ファイルの設定

.claspignoreファイルを作成することで、pushするときに無視するファイルを指定できます。例えば:

# すべてのファイルを無視
**/**

# 以下のファイルのみpush対象とする
!appsscript.json
!src/**/*.js
!tests/**/*.js

3. プロジェクト設定ファイル

claspは.clasp.jsonという設定ファイルを使用します。公式リポジトリによると、このファイルには以下の設定が含まれます:

{
  "scriptId": "",       // 必須: スクリプトのID
  "rootDir": "build/",  // オプション: ローカルディレクトリ
  "projectId": "project-id-xxxxxxxxxxxxxxxxxxx", // オプション: GCPプロジェクトID
  "fileExtension": "ts", // オプション: ファイル拡張子
  "filePushOrder": ["file1.ts", "file2.ts"] // オプション: ファイルのプッシュ順序
}

各設定の詳細:

  • scriptId(必須): Google Scriptプロジェクトの識別子
  • rootDir(オプション): ローカルファイルを保存するディレクトリ
  • projectId(オプション): Google Cloud Platformのプロジェクト識別子
  • fileExtension(オプション): ローカルスクリプトファイルの拡張子
  • filePushOrder(オプション): 最初にプッシュするファイルの順序指定

トラブルシューティング

よくある問題と解決方法

認証エラー

Error: Command failed: clasp login

解決策:

  • Google Apps Script APIが有効になっているか確認
  • clasp logoutを実行してから再度clasp loginを試す

プッシュエラー

Error: Command failed: clasp push

解決策:

  • .clasprc.jsonの権限を確認
  • 無効なファイルタイプがないか確認
  • 強制的にプッシュ: clasp push --force

Node.jsのバージョン問題

claspはNode.js 22.0.0以上が必要です。バージョンを確認し、必要に応じて更新してください:

node -v
# Node.jsが古い場合の更新(Windowsを除く)
npm install -g npm  # npmとnpxを更新
npx n latest  # nパッケージを使用してnodeを更新

デバッグ方法

内部ログを有効にしてデバッグするには、環境変数DEBUG=clasp:*を設定します:

DEBUG=clasp:* clasp pull  # 詳細なデバッグ出力を表示

おわりに

claspを使うことで、Google Apps Scriptの開発体験は大きく向上します。ローカル開発環境、バージョン管理、チーム開発のしやすさなど、多くのメリットがあります。

この記事で紹介した基本的なコマンドとワークフローを活用して、より効率的なGAS開発を始めてみてください。また、公式のコードラボも用意されていますので、実践的な学習に役立ててください:clasp codelab

TypeScriptでの開発

clasp 3.xではTypeScript直接サポートが削除されたことがGitHubリポジトリに明記されています。公式情報によると、TypeScriptプロジェクトではTypeScriptとRollupなどのバンドラーを組み合わせて使用することが推奨されています。

TypeScript開発のアプローチ

TypeScript開発用のテンプレートプロジェクトもGitHubで公開されています。これらを利用すると、簡単に開発環境を構築できます:

参考リンク

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?