claspのインストール(Windows)      

# はじめに
仕事で GAS(Google Apps Script) を触る機会があり、claspをインストールする機会がありましたので備忘録としてまとめてみました。

# 開発環境
- Windows10 Pro 64bit
- node v12.16.2
- npm 6.14.4
- clasp 2.3.0

# claspとは
GAS(Google Apps Script)をローカル環境で管理することが出来るようになるツールです。
Googleから提供されています。

# claspのインストール
npmを使います。

```
npm install @google/clasp -g
```

# Google Apps Script APIを有効化する
Google Apps Script APIを有効化するために[設定画面](https://script.google.com/home/usersettings)を開く。

Google Apps Script API の設定が「オフ」になっている場合は、「オン」に設定しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/ddf941f5-f3b7-cf4d-1a91-032493714741.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/73fd44ca-5901-8efa-2cec-d88d2217a03a.png)


# ログイン
`clasp login`コマンドでログインできる。
コマンドを叩くと同時にブラウザが立ち上がるのでログインする。

すると、以下のような許可を求める画面が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/b2c2690b-8f07-523e-b145-ce7583242c0b.png)

画面下部に表示される「許可ボタン」を押下すると、以下のようなメッセージが表示される。

```
Authorization successful.

Default credentials saved to: ~\.clasprc.json (C:\Users\xxxxxxxx\.clasprc.json).
```

ログイン情報の保存場所を確認することができる。


# 新規スクリプト作成
`hoge`という名称のスクリプトを作成する場合は`clasp create --title hoge`を実行する。
実行後、作成するスクリプトの種類を聞かれるので適当なものを選択する。

```
c:\clasp>clasp create --title hoge
? Create which script? (Use arrow keys)
> standalone
  docs
  sheets
  slides
  forms
  webapp
  api
```

今回は「standalone」を選択する。
作成に成功するとURLが表示されるので、ブラウザで開くか`clasp open`コマンドを実行する。

```
c:\clasp>clasp create --title hoge
? Create which script? standalone
Created new standalone script: https://script.google.com/d/1xxx-lHcpXXXXKHzrGXXXXKVgfXXXXfKuPXXXXiey2XXXXgMLuXXXXHQU/edit
Warning: files in subfolder are not accounted for unless you set a '.claspignore' file.
Cloned 1 file.
└─ appsscript.json
```

GoogleDrive の中を見てみると、hoge というスクリプトが作成されていることが分かる。
![一覧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/f51d90db-1813-ff56-1b79-3ed1f447c309.png)

スクリプトを開いてみると、myFunction関数が記述された`Code.gs`が作られていることが分かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/9a9432ab-174d-a5f2-7b5a-809661245733.png)

# スクリプトのPull
`clasp pull`コマンドを実行することで`Code.gs`ファイルをローカルに取ってくることができる。
※pullを行うと、拡張子が`.gs`から`.js`に書き換えられる。

```
c:\clasp>clasp pull
Warning: files in subfolder are not accounted for unless you set a '.claspignore' file.
Cloned 2 files.
└─ Code.js
└─ appsscript.json
```

# スクリプトを修正
エディタで`Code.js`ファイルを開いて編集を行う。

```javascript:Code.js
function myFunction() {
  console.log('Hello, GAS!'); // 追加した
}
```

# スクリプトのPush
```
c:\clasp>clasp push
└─ Code.js
└─ appsscript.json
Pushed 2 files.
```

ローカルでの修正内容が反映されていることが分かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759747/8f854f61-8f6b-d437-c151-0e7317a99ae0.png)

以上で終了です。

# 【おまけ】.claspignoreについて

`clasp push`した際にpush対象から除外したいファイルは、`.claspignore`を配置してその中に記述するようにするようにします。
※ちょうど、`.gitignore`のような感じ。

なお、`.claspignore`を配置しない場合は**デフォルトのパターンセット**が適用されるらしく、
GASではない`.txt`ファイルなどは予めpushされないようになっているようです。

ただし、ネット上の記事を読んでいると、このデフォルトのパターンセットはclaspバージョンアップに伴い変更されるようなので、
バージョンアップされた契機で[公式ページのガイド](https://github.com/google/clasp/tree/2.3.0#ignore-file-claspignore)を確認されることをお勧めします。
※というか、きちんと`.gitignore`を書きましょうという話。