clasp
- 2018年1月から使えるようになったGoogle公式のCLIツール
- できること
- プロジェクトの新規作成、クローン
- GASファイルのアップロード/ダウンロード
- バージョン一覧の取得
- 新規バージョンを作成
- デプロイ
- デプロイ一覧の取得
- スクリプトエディタを開く
- GASがローカル開発できる
- TypeScriptでかける
- コードラボが用意されているのでこちらで学べる
https://codelabs.developers.google.com/codelabs/clasp/#0
インストール
NodebrewでNode.jsのバージョンを管理する でNodeを入れる
グローバルにインストールしても、ローカルにnpm initしてからインストールしてもよい。
Google Apps Script APIを有効化
https://script.google.com/home/usersettings
ログイン
Web上のエディタにアップロードするにもダウンロードするにも認証が必要なので、以下コマンドでログインする
ブラウザが開き、アカウントの選択と、APIの承認画面が表示されるので、承認する
ログイン情報は、$HOME/.clasprc.json
に保存されている
既存のプロジェクトを編集したい場合
git clone と同じような感覚でローカルにダウンロードできる
scriptIdは、スクリプトエディタで開いたときの以下の部分
- 旧エディタ
https://script.google.com/d/<scriptId>/edit
- 新エディタ
https://script.google.com/home/projects/<scriptId>/edit
※2020年の年末ごろにエディタが新しくなり、URLも変わった
- GASのプロジェクトがダウンロードされる
- .clasp.json
- プロジェクト設定ファイル
- scriptId (必須): https://script.google.com/d/<SCRIPT_ID>/edit のSCRIPT_ID部分
- rootDir: プロジェクトを保存するディレクトリを指定
- appsscript.json
- マニフェストファイル
- GAS実行時の設定など
- 作成済みのスクリプトファイル
- なお、.gsではなく.jsでダウンロードされる
- .clasp.json
新規作成の場合
プロジェクトタイプを聞かれる
- standalone: スクリプト単体で作成される
- docs,sheets,…: 選択したドキュメントと、それに紐づくスクリプトとして作成される
リモートの修正をローカルに反映する
- ブラウザ上で修正したものがローカルに反映される
- 強制的に上書きされるので注意が必要
ローカルの修正をリモートに反映する
- rootDirで指定したすべてのファイルがpushされる
- 特にquestionもなく強制上書きになるので、Web上で編集している場合は注意する
- Git関連のファイルなどは反映したくない
⇒ claspignore を作成
claspignore
カレントディレクトリに .claspignore
ファイルを作成して、clasp管理外にするファイルを記載すると、push,pullから管理外になる
記法はgitignoreと同様
ディレクトリ構成
以下のようにディレクトリを分けることができる
- これを
clasp push
すると、/
区切りでファイルが登録される - pull してもディレクトリは保持される
その他できること
プロジェクトを開く
ブラウザで開くには以下のコマンドを実行
関数を実行
ログを見る
事前にProjectIDを設定しておく
スクリプトエディタからリソース > Cloud Platform Project
を開いて、project-id-xxxxxxxxxxxxxxxxxxx
をコピーして.clasp.jsonに貼り付ける
バージョン管理
Gitのバージョン管理ではなくて、GASのバージョン管理
するとスクリプトエディタ上でバージョンが作られているのを確認できる
コマンドで確認する場合は clasp versions
Git管理
- clasp でローカルにGASプロジェクトを作成できるようになったため、Gitで管理できる
- gitignoreに、Node.gitignoreを書いておくとよい
他の人も git clone から開発できるようになる(スクリプトへのアクセス権限はもっている必要がある)
CIとの連携
-
Jenkinsにclasp を設定しておけば、例えば以下のようなことが可能 ローカルで開発 ↓ BitbucketにPush ↓ Jenkinsで
git clone
↓ テスト、静的解析 ↓clasp push
-
注意
- リモートかローカルか決めたほうでのみ開発する
- スクリプトエディタからであれば開発環境構築なしで作れるというメリットもあるので、どちらを取るかはそのときに合わせる
参考
詳解! Google Apps Script完全入門 ~Google Apps & G Suiteの最新プログラミングガイド~
Google Apps Scriptの新しい3つの機能 その① Dashboard Google Apps Scriptの新しい3つの機能 その② Apps Script API Google Apps Scriptの新しい3つの機能 その③ CLI Tool Clasp
https://codelabs.developers.google.com/codelabs/clasp/#0 Command Line Interface using clasp