この記事は2018/1/11にGoogle Apps Scriptに新しく追加された3機能の紹介記事の3番目です。
https://gsuite-developers.googleblog.com/2018/01/three-new-tools-to-help-improve-your.html?m=1
新機能
- Dashboard
- Apps Script API
- CLI Tool
clasp
(この記事です)
一つ一つが結構しっかりした機能なので記事を分けて説明したいと思います。
今回は3つ目のCLI Tool clasp
です。
CLI Tool clasp
clasp
はオープンソースのGAS向けCLIツールです。
https://github.com/google/clasp
CLI上からGASプロジェクトに対して以下の様なことが行なえます。
- GASプロジェクトの新規作成
- GASプロジェクトのダウンロード
- SheetsやDocumentsに紐付いているContainer Bound Scriptでも可能です。
- GASプロジェクトファイルのアップロード/ダウンロード
- GASプロジェクトのバージョン一覧の取得
- GASプロジェクトの新規バージョンを作成
- GASプロジェクトのデプロイ
- GASプロジェクトのデプロイ一覧の取得
- GASプロジェクトをエディタで開く
今まで喉から手が出るほど欲しかった機能が目白押しです。
なお既にCodelabも公開されているので、サラッと見ておくと言いと思います。
https://codelabs.developers.google.com/codelabs/clasp/#0
インストール
clasp
はNode.jsで書かれており、npmで配信されているので、Node.jsの4.7.4以降が必要になります。
そして以下のコマンドでインスタンスができます。
$ npm install -g @google/clasp
準備
利用するためには、まずGoogleアカウントのログインとAPIの認可が必要です。
以下のコマンドで、ログイン、認可を行います。
$ clasp login
するとブラウザが開きGoogleアカウントへのログイン、APIの認可が行われます。
プロジェクトの作成
ログインが出来たらGASプロジェクトを作成します。
$ mkdir myFirstClasp
$ cd myFirstClasp
$ clasp create myFirstClasp
clasp create
で新規にGASプロジェクトが作成され、その設定ファイルがローカルに保存されます。
2つのファイルが作成されており.clasp.json
はGASのプロジェクトIDが記述されています。
多分今後機能が増えると色々設定が書かれるような気がします。
appsscript.json
は最近作成されたmanifestファイルで、OAuth ScopeやLibraryが記述されます。
プロジェクトのクローン
既に存在するGASプロジェクト(Container Bound Scriptを含む)をローカルに持ってきたい場合は、以下を行います。
$ clasp clone [GASプロジェクトのID]
GASプロジェクトのIDはGASエディタのFile > Project properties > Info
から取得できます。
なお、新規作成時と同じように、.clasp.json
が作成されます。
雰囲気的にコードはこの時点ではダウンロードされないのでご注意ください。
コードのダウンロードは↓で書きます。
コードのダウンロード
GASプロジェクトのコードをダウンロードする場合は、.clasp.jsonがある場所で、以下を行います。
$ clasp pull
するとGASプロジェクトのファイル群をダウンロードしてくれます。
コードのアップロード
コードをアップロードするには、.clasp.jsonがある場所で以下を行います。
$ clasp push
するとローカルにあるファイルをGASプロジェクトへアップロードしてくれます。
ただ幾つか注意点(ある意味便利機能)があります。
- アップロードされるファイルの拡張子とignoreファイル
- アップロードされるファイルのディレクトリ構造と、ファイル名のマッピング
アップロードされるファイルの拡張子とignoreファイル
clasp push
を行った際、アップロードされるのは拡張子が.gs
、.html
、.json
のみです。
また.json
はappsscript.json
でなければならず、それ以外の例えばpackage.json
等があるとエラーになります。
これらのファイルをアップロードしないようにしたい場合は以下のように.claspignore
ファイルをディレクトリ中に置く必要があります。
ドキュメントには記述されてないので注意してください。
package.json
アップロードされるファイルのディレクトリ構造と、ファイル名のマッピング
ローカルでディレクトリの中にあるファイルは、{ディレクトリ名}/{ファイル名}
という名前のファイル名でGASプロジェクト上保存されます。
# スクリプトエディタ上
├── tests/slides.gs
└── tests/sheets.gs
# ローカル
├── tests/
│ ├─ slides.gs
│ └─ sheets.gs
ローカルだと扱いやすいですが、スクリプトエディタ上の見た目はそのまま一ファイルになるのでちょっと見づらいです。
バージョン一覧の取得、作成
以下でやれます。
$ clasp versions # 一覧取得
$ clasp version [バージョン名] [説明] # バージョン作成
デプロイ
先にappsscrpt.jsonなどでwebappsの設定を行い、バージョンを作成していれば、ローカルからデプロイすることも可能です。
$ clasp deploy [バージョン名] [説明]
$ clasp undeploy <deploymentId>
また再デプロイも出来ます。
$ clasp redeploy <deploymentId> <バージョン名> <説明>
スクリプトエディタを開く
以下で開けます。
$ clasp open
まとめ
GASの開発で必要な機能は全て入っていますね。
個人的にはライブラリの検索や、もっと言えばnpmからインストールとか出来たりするともっと楽しいことになるのですが、
そうなる日も近いのではないでしょうか。
これからのGAS開発ではclaspは必須になるといってもいいでしょう。