いてづきブログ

情シスでやってみたことの備忘録

clasp事始め

claspのインストールからpushできるようになるまで

ドキュメント&公式リポジトリ

github.com

インストール

公式ドキュメントに沿ってインストールを試みる

sudo npm i @google/clasp -g

するといきなりエラーが出てつまづく

...
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, ...

READMEの下の方にトラブルシューティングがあるのでそれを読む。 Node version >= 6.0.0.とのことなので、トラブルシューティングに沿ってnodeのアップデートをする。

node -v # Check Node version
sudo npm install n -g
sudo n latest

アップデート後、再度インストールコマンドを実行することでclaspのインストールができた。

clasp -v
> 1.7.0

プロジェクト作成

既存のGASプロジェクトと紐付けることもできるみたいだけどまずはclaspでプロジェクトを作成してみる

clasp create


作成するプロジェクトのタイプを選択させられるのでとりあえずstandaloneを選択。 するとまたエラー。

User has not enabled the Apps Script API. 
Enable it by visiting https://script.google.com/home/usersettings then retry.
If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.


AppsScriptAPIをオンにしろと言われているので指示に従ってhttps://script.google.com/home/usersettingsにアクセスしてAPIをオンにして再度プロジェクトを作成する。

.clasp.jsonappsscript.jsonが作成された。 なぜかappsscript.jsonのtimezoneが"America/New_York"になっているがとりあえず気にしないことにする。

コードを書いて反映させる

この時点で既にGoogleドライブ上にGASプロジェクトは作られているみたい(?)
clasp pullすると空のmyFunctionが入ったCode.jsがダウンロードされてくる。

とりあえずログを出せるように書いてpushしてみる。

function myFunction() {
  Logger.log("hoge")
}


clasp openするとブラウザでGASのエディタが開き、ローカルで書いたコードが反映されていることがわかる。

次の課題

clasp runできない問題

clasp runしてローカルで実行しようとしたら認証スコープ定義しろみたいなエラーが出て実行できなかった。

Error: Local client credentials unauthenticated. Check scopes/authorization.

Logger.logしか書いてないので認証するところないと思うんだけど(ブラウザのGASエディタでは認証ダイアログも開かず問題なく実行できた)

ES6で書けるようにする

とりあえずES6で適当に書いてpushしたら書いたものがそのまま上がってしまって実行できなかったので(GASはES6記法未対応)何らか変換する部分は自分で用意する必要があるっぽい。

現時点だとローカルでGit管理できるということ以外一切のメリットがないのでもう少し環境整備する必要がある。

とりあえず今日はここまで

Going GAS: From VBA to Google Apps Script (English Edition)

Going GAS: From VBA to Google Apps Script (English Edition)