Google Apps ScriptのプロジェクトをGitでバージョン管理する

GASの勉強中に、これGoogleのエディタじゃなくて自分の好きなエディタで書けたらいいな、それをGitで管理できたらいいな、と思って調べました:blush:
環境はMacです:keyboard:

# 必要なもの
2018年に発表されたGoogleの**「clasp」**というCLIツールを使います。
これを使うとGASのプロジェクトをCLIで操作できます。
[詳しくはこちら](https://github.com/google/clasp)

# 前提
- GitHubのアカウントがあること
- Homebrewがインストールされていること

#手順
## nodebrew＆Node.jsをインストールする
claspはNode.jsで書かれているので、nodebrewを用いてインストールしましょう:blush:
**nodebrew**とは、Node.jsのバージョンを管理・切替ができるツールです。
#### 1. homebrewを使ってnodebrewをインストールする

```sh
$ brew install nodebrew
```
#### 2. インストールできているか確認
```sh
$ nodebrew -v
```

#### 3. 最新版のNode.jsをインストールする
```sh
$ nodebrew install-binary latest
```

#### 4. インストールされたNode.jsのバージョン確認
currentのところが今使用中のバージョンです。

```sh
$ nodebrew list
v7.1.0
v13.0.0

current: v13.0.0
```
#### 5. パスを通す
Userはあなたのホームディレクトリ名にしてください:blush:
**bash**の場合▼

```sh
$ echo 'export PATH=$PATH:/Users/User/.nodebrew/current/bin' >> ~/.bashrc
```
**zsh**の場合▼

```sh
$ echo 'export PATH=$PATH:/Users/User/.nodebrew/current/bin' >> ~/.zshrc
```

#### 6.Node.jsのバージョン確認
```sh
$ node -v
v13.0.0
```

#### 7. npmのバージョン確認
claspはnpmで配信されています:slight_smile:

```sh
$ npm -v 
6.12.0
```
- npmとは<br>
**N**ode **P**ackage **M**anagerの略。<br>
Node.jsのパッケージを管理するツール。
パッケージというのは、予め用意されている便利な機能をまとめたもの。

#### :question:別のバージョンに変えたかったら
インストール可能なバージョンを確認する

```sh
$ nodebrew ls-remote

v10.0.0   v10.1.0   v10.2.0   v10.2.1   v10.3.0   v10.4.0   v10.4.1   v10.5.0
v10.6.0   v10.7.0   v10.8.0   v10.9.0   v10.10.0  v10.11.0  v10.12.0  v10.13.0
v10.14.0  v10.14.1  v10.14.2  v10.15.0  v10.15.1  v10.15.2  v10.15.3  v10.16.0
v10.16.1  v10.16.2  v10.16.3  v10.17.0  v10.18.0  v10.18.1  v10.19.0  v10.20.0
v10.20.1

v11.0.0   v11.1.0   v11.2.0   v11.3.0   v11.4.0   v11.5.0   v11.6.0   v11.7.0
v11.8.0   v11.9.0   v11.10.0  v11.10.1  v11.11.0  v11.12.0  v11.13.0  v11.14.0
v11.15.0

v12.0.0   v12.1.0   v12.2.0   v12.3.0   v12.3.1   v12.4.0   v12.5.0   v12.6.0
v12.7.0   v12.8.0   v12.8.1   v12.9.0   v12.9.1   v12.10.0  v12.11.0  v12.11.1
v12.12.0  v12.13.0  v12.13.1  v12.14.0  v12.14.1  v12.15.0  v12.16.0  v12.16.1
v12.16.2

v13.0.0   v13.0.1   v13.1.0   v13.2.0   v13.3.0   v13.4.0   v13.5.0   v13.6.0
v13.7.0   v13.8.0   v13.9.0   v13.10.0  v13.10.1  v13.11.0  v13.12.0  v13.13.0


v14.0.0
```
任意のバージョンを指定してインストールする

```sh
$ nodebrew install-binary 12.0.0
```
インストールしたバージョンを有効化する

```sh
$ nodebrew use  v12.0.0
```

## claspをインストールする
#### 1. claspをインストールする

```sh
$ npm i @google/clasp -g
```
##### :warning:エラーが出た場合
エラーが出てしまったら、Node.jsのバージョンが古いのが原因かもしれません。バージョンを切り替えてみてください。

#### 2. ログインする

```sh
$ clasp login
Logging in globally...
🔑 Authorize clasp by visiting this url:
```
ブラウザが開いたら、**アクセスを許可**してください。

#### 3. ログイン成功
ログインできると以下のメッセージが表示されるはず

```sh
Authorization successful.

Default credentials saved to: ~/.clasprc.json (/Users/User/.clasprc.json).
```

## プロジェクトをクローンする

#### 1. Google Apps APIを有効化する
[https://script.google.com/home/usersettings](https://script.google.com/home/usersettings)にアクセスしてAPIの使用を許可してください
<img width="1764" alt="スクリーンショット 2020-04-28 10.48.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/5f1ba234-f471-ad57-3a70-9b65e71f8ae7.png">

#### 2. スクリプトIDを確認
<img width="1125" alt="スクリーンショット 2020-04-28 10.54.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/733363a3-4120-b4b3-2e65-ae6054409c76.png">
<img width="781" alt="スクリーンショット 2020-04-28 10.56.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/d85729a3-2a46-ea3c-8b46-421f7ad36e9e.png">

#### 3. プロジェクトをクローンする

```sh
$ clasp clone スクリプトID
```
Finderを見ると、cloneしたファイルが入っているはずです。

## GitHubにpushする
Bitbucketなどでも大丈夫ですが、今回はGitHubを使います:blush:
**SSH鍵は作成済み**であることが前提です。
作っていない方は以下サイト参考に▼
[Macで公開鍵と秘密鍵を生成する方法](https://qiita.com/wakahara3/items/52094d476774f3a2f619)

#### 1. 非公開リポジトリを作成する
<img width="781" alt="スクリーンショット 2020-04-28 11.16.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/212dcf73-d07d-017a-3b35-8e713deddb72.png">

#### 2. 公開鍵をGitHubに登録する
titleには公開鍵の名前、keyに中身をコピーしてください。

<img width="959" alt="スクリーンショット 2020-04-28 11.19.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/e19f521a-27f1-867a-3aa7-fc9efcdc6045.png">

<img width="1004" alt="スクリーンショット 2020-04-28 11.20.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/51465b23-80fb-2eba-ec5f-8ff4ae83bc0f.png">

<img width="762" alt="スクリーンショット 2020-04-28 11.24.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435447/d01d4f16-70c3-1fe9-4403-f57ee3dd8085.png">

#### 3. クローンしてきたファイルをgitの管理下に置く
クローンしてきたファイルのある階層にcdコマンドで移動してから以下を実行

```sh
$ git init
```
#### 4. pushする
```sh
$ git status
$ git add .
$ git commit -m 'はじめてのコミット'
$ git remote add origin https://github.com/[GitHubのアカウント名]/[作成したリポジトリ名].git
$ git push -u origin master
```

##### :warning:エラーが出た場合
README関連のエラーかもしれないので以下参考にしてみてください
[はじめてのGitHubへのpushでエラーが出る](https://qiita.com/one_punch_man/items/7f7847f6b2d9bf79feba)

## まとめ
以上長かったですが、おかげでGit管理しつつ、大好きなVSCodeを使ってこれから学習を進めていけそうです:blush: