clasp で Google Apps Script のコードをローカルにダウンロードする

Google Apps Script のコードを Git 管理しようと調べたら clasp というツールがあるらしいので試してみることにしました。

Googleアカウントの設定

まず Googleアカウント 側で設定変更しておきます。

https://script.google.com/home/usersettings の表示
https://script.google.com/home/usersettings の表示

Googleアカウント でログインした状態で、 https://script.google.com/home/usersettings にアクセスします。

Google Apps Script API という項目があり、デフォルトで「オフ」になっているので、これをクリック。

Google Apps Script API をオンにする
Google Apps Script API をオンにする

Google Apps Script API の設定項目が展開されるので、トグルをクリックしてオンの状態にします。

これでOK。

clasp の準備

続いて clasp の準備。適当にフォルダを掘って、 package.json を用意します。

> yarn add @google/clasp

続いて @google/clasp をインストールします。

{
  "name": "clasp-test",
  "version": "0.0.1",
  "main": "index.js",
  "license": "ISC",
  "scripts": {
    "clasp": "clasp"
  },
  "dependencies": {
    "@google/clasp": "^2.4.1"
  }
}

このような感じになりました。なお、 scripts を追加してコマンドが通るようにしています (環境変数で ./node_modules/bin/ にパスが通っている前提)。

> clasp --version
2.4.1

OKです。

> clasp login 
Logging in globally…
C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe[18300]: c:\ws\src\api\callback.cc:129: Assertion `(env_->execution_async_id()) == (0)' failed.

# 略

clasp login しようとしたらエラーになりました。調べてみると Node.js のバージョンを 14系 に落とすと成功したとのことなので、バージョンを落とします。 Volta 使用のPCなのでついでにピン止めします。

> volta install node@14.18.2

# 略

> volta pin node@14.18.2    

# 略
>

OK。

{
  "name": "clasp-test",
  "version": "0.0.1",
  "main": "index.js",
  "license": "ISC",
  "scripts": {
    "clasp": "clasp"
  },
  "dependencies": {
    "@google/clasp": "^2.4.1"
  },
  "volta": {
    "node": "14.18.2"
  }
}

これで package.json は Volta のピンが増えた状態に。

これでもう一度 clasp login とすると、ブラウザが起動してログインを求められます。……12/20現在でも Node.js 14系 でないとダメなようです。

> clasp login
Logging in globally…
🔑 Authorize clasp by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?XXXXXXXXXXXXXXXXXXXXXX... #略

Authorization successful.

Default credentials saved to: C:\Users\USERNAME\.clasprc.json.
> 
clasp への権限の許可を求める画面
clasp への権限の許可を求める画面

ログインすると clasp へ権限を与えることを許可するか確認する画面が表示されるので「許可」。

コールバックURLに遷移する
コールバックURLに遷移する

許可すると localhost のコールバックURLに遷移します。これで権限の許可はOK。コマンドラインもトークン情報を含んだ .clasprc.json を生成したことが表示されます。

Google Apps Script の ID を URL からコピー
Google Apps Script の ID を URL からコピー

最後に、ローカルにコードをダウンロードするに当たって必要な Google Apps Script の ID を URL からコピーします。今回は 1XXXXXXXXXX...XXXXXXXJ ですね。

> clasp clone 1XXXXXXXXXX...XXXXXXXJ

# 略

└─ PATH/TO/PROJECT/package.json
└─ PATH/TO/PROJECT/yarn.lock

> 

OK。これでローカルにダウンロードすることができました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。