
claspでGASローカル開発
# 最初に
Google Apps Script = GAS のスクリプトを書くときのエディタはちょっと物足りないです。ローカルでお気に入りのエディタ(Vim, Emacs, VSCodeなど)で書いたほうが確実に効率が上がります。
これを claspを用いて実現します。
以下は readme を砕いて書いてます。少しでもGASが広まればいいなぁ。
# 一度だけやること
## claspのインストール
### NodeJS のバージョンチェック
2020/04/25現在の NodeJS のバージョンは 10.3.0以上が必要です。
node -vで要チェック。
### npmでインストール
npm install -g @google/clasp
## Google Apps Script APIのオン
Google Apps Script API をオンにする。
この時、Google アカウントを複数持っている人は、GASを使いたいアカウントなのかどうか要チェック。右上のアイコンで切り替えます。
## clasp login
こちら のNoteの項目によれば、 clasp login と clasp create/clone をする必要があるとのこと。確かに🦀
ログインをして、クライアントの情報を ~/.clasprc.json に保存します。
clasp login
上記のコマンドを実行すると、ブラウザが立ち上がります。GASを使いたいアカウントを選択し、許可をすることでログインができます。
なおログアウトする場合は clasp logout です(参照)。
# 毎回やる手順
## createかclone
ローカルで新しくプロジェクトを作るか、既存のプロジェクトをローカルに落としてくるかのどちらかをします。
このどちらかができれば clasp open や clasp push、clasp pull などが使えるようになりますが、実行は別の設定が必要なので注意。
### createの場合
ローカルで新しくプロジェクトを作ります。
clasp create [--title <title>] [--type <type>] [--rootDir <dir>] [--parentId <id>]
--title <title>
・ プロジェクト名
--type [docs/sheets/slides/forms/standalone/webapp/api]
・ GASは、Google ドキュメント・スプレッドシート・スライド・フォーム などと紐付けることができるのでその指定になります
・ --parentId を指定した場合は --type の指定は無視されます
・ 指定しない場合は紐付けられていないスタンドアロン=standaloneになります
--rootDir <dir>
・ プロジェクトを保存するローカルの場所
・ 指定しない場合はカレントディレクトリになります
--parentId <id>
・ プロジェクトの親のID
・ Google ドキュメント・スプレッドシート・スライド・フォーム と紐付けられたプロジェクトの場合、それらのID
→ 例えば、スプレッドシートの場合https://docs.google.com/spreadsheets/d/{id}/edit
・ 紐付けられていない(=スタンドアロン)場合、プロジェクトが作られた時に生成されています
### cloneの場合
既存のプロジェクトをローカルに落とします。
clasp clone <scriptId | scriptURL> [versionNumber] [--rootDir <dir>]
scriptId | scriptURL
・ cloneしたいスクリプトIDかスクリプトのURL
・ スクリプトIDは、当該プロジェクトを開きメニューの「ファイル > プロジェクトのプロパティ > スクリプト ID」から見ることができます(参考)
--versionNumber <number>
・ cloneしたいスクリプトのバージョン
--rootDir <dir>
・ プロジェクトを保存するローカルの場所
・ 指定しない場合はカレントディレクトリになります
# pull ローカルに反映
script.google.com(要するに自分のグーグルドライブなど)の状態をローカルに反映します。
clasp pull [--versionNumber]
# push ローカルを反映
script.google.comへローカルの状態を反映します。
clasp push [--watch] [--force]
-f --force
・ マニュフェストを強制的に上書き
-w --watch
・ ローカルファイルの変更を監視して、数秒ごとにファイルのpushを行います
僕がGASを書く時は、vim か tmux で新しいパネルなどを開いておき、そこで clasp push --watch を実行させています。
# open 開く
カレントディレクトリのプロジェクトをブラウザで開くコマンドです。
clasp open [scriptId] [--webapp] [--creds]
[scriptId]
・ カレントディレクトリのプロジェクトではなく指定したプロジェクトを開きます
--webapp
・ ウェブアプリをブラウザで開きます
--creds
・ credentialsを作るためのURLを開きます
僕がよく使うコマンドはこのぐらいです。他にもコマンドはあるのでこちらから確認してみましょう。
以下は気が向いたら書きます。
## clasp run の準備
まだローカルからの実行ができない状態なので、Google Cloud Platform のプロジェクトと紐付けることでローカルでも実行できるようにします。
### GCPプロジェクトの作成
まず、リソースの管理 にアクセスします。この時、Google アカウントを複数持っている人は、GASを使いたいアカウントなのかどうか要チェック。右上のアイコンで切り替えます。
「プロジェクトを作成」から
TODO: ここから続きを書く
### projectId を .clasp.json に書く
⚠このprojectId は parentId と紛らわしいですが、前者はGCPのプロジェクトのID、後者は GASのプロジェクトに関わるIDです。