GASをGitHub管理してみた

長い間 GAS を書いてきて、Git 管理したいとは思っていましたが、どうも Chrome 拡張機能を入れることに抵抗があり避けてきました。
が、大きめのものを作ることも増えて、いい加減しんどくなってきたので GitHub 管理に挑戦してみました。

## 準備編
準備としては以下のことを行います
- Chrome 拡張の Google Apps Script GitHub アシスタントの導入
- Chrome 拡張から GitHub を操作できるように、GitHub で token を作成
- GitHub の token を Chrome 拡張に設定
- Google App Script API の有効化

### Chrome拡張を入れる
[Google Apps Script GitHub アシスタント](https://chrome.google.com/webstore/detail/google-apps-script-github/lfjcgcmkmjjlieihflfhjopckgpelofo?hl=ja)をインストールします。
リンク先の chrome ウェブストアで `Chromeに追加` ボタンを押すだけです。
![スクリーンショット 2024-06-06 22.21.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/fcb562ab-02ff-1151-5cb6-a7c3a4f0712a.png)

### GitHubで token を作成
インストールした Chrome 拡張の Google Apps Script GitHub アシスタントから GitHub を操作できるように GitHub で token を発行します。
1. [GitHub](https://github.com/)にアクセスしログイン
1. 画面右上の自分のアイコンをクリックし、表示されたメニューの下の方にある `Settings` をクリック
1. 開いた Settings 画面の左のメニューの一番下の `Developer Settings` をクリック
1. 開いた GitHub Apps 画面お左のメニューの `Personal access tokens` をクリックし、展開した中の `Tokens (classic)` をクリック
![スクリーンショット 2024-06-06 22.23.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/f65a42a1-b9e3-6f00-205c-0d4c56eced33.png)
1. 開いた Personal access tokens (classic)画面の右上の `Generate new token` ボタンをクリックし、展開した中の `Generate new token (classic)` をクリック
![スクリーンショット 2024-06-06 22.26.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/523b6564-8904-6780-772e-e2e22f177a68.png)
1. 開いた New personal access token (classic)画面の以下を入力し、最後に一番下の `Generate token` ボタンをクリック
    - Note: 任意の token 名
    - Select scopes: repoにチェック
![スクリーンショット 2024-06-06 22.27.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/e5a9d7a5-9b4c-709d-65d6-988561c77b95.png)
1. token が発行されるのでコピーする（token の再表示はできません）

### 作成した GitHub token を Google Apps Script GitHub アシスタントに設定する
1. Chromeで拡張機能からGoogle Apps Script GitHub アシスタントアイコンをクリックし、開かれたメニューから `オプション` をクリック
1. 開いたGoogle Apps Script Github アシスタントに以下を入力して `GITHUB LOGIN` ボタンをクリック
    - username: 任意の名前
    - github access token: GitHubで取得した token を入力
1. Google アカウントの選択画面が出るので、アカウントをクリック
1. アクセスの許可を求められるので `Allow` ボタンをクリック

### Google App Script APIを有効化する
1. [Apps Script](https://script.google.com/home?pli=1)にアクセスし、左のメニューの `設定` をクリック
1. 開いた設定画面の `Google Apps Script API` をクリック
1. 開いたGoogle Apps Script API画面でオンにする
![スクリーンショット 2024-06-06 22.32.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/ea9014dd-c315-d741-1d54-871c61534eb4.png)

Google Apps Script APIを有効化（オン）に出来たら、GASのスクリプトエディタの上部メニュー（実行等が並んでいる行）の右側にメニューが追加されます
![スクリーンショット 2024-06-06 22.34.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/bc8d6fb8-2a52-06f4-2a2f-55f15f51613b.png)

## GAS での開発
ここではすでに GAS のスクリプトエディタで書いたコードがある前提で開発の進め方の話をします。
と言っても1ステップだけです。 

### GitHubに Push
1. GitHub 管理したい GAS のスクリプトエディタの上部メニューの `Repository` をクリックして、 `Create new repo` をクリック
1. Repository 作成画面が表示されるので以下の入力をし `Create` をクリック
    - Repository name: 任意の Repository 名を入力
    - Type: Public / Private を選択
    - Description: Repository の説明を入力（GitHub の Repository の README.md に書かれる）
1. `Branch` の横の ⬆️ をクリック
1. 開いた Diff 画面から、Push するファイルを選択し `Comment` を入力し `Push` ボタンをクリック

## まとめ
これでスクリプトエディタで GAS のコードを書いて、履歴として GitHub が利用できるようになりました！

## おまけ
GASのスクリプトエディタは使いにくい！ローカルのエディタでコードを書きたい！
という方は以下の手順を行います。
- GAS のスクリプトエディタ から GitHub に　Push したコードをローカルに落とす
- ローカルでコードを書いて GitHub に Push する（ここは単に Git の使い方になるため省略）
- ローカルから GitHub に Push したコードを GAS のスクリプトエディタに Pull

### GitHub に Push したコードをローカルに落とす
1. Push した GitHub の Repository の Code 画面の右上の `Code` ボタンをクリックし、展開した中の `SSH` タブの値をコピー
![スクリーンショット 2024-06-06 23.14.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/0bc9b55b-7b63-2a60-c9e2-aa36e0f8353e.png)
1. ローカルに落としたいディレクトリを開き以下のコマンドを実行
    ```
    % git clone [GitHubで取得した値]（git@github.com:....）
    ```

### GitHub のコードを GAS のスクリプトエディタで Pull
1. GAS のスクリプトエディタの上部メニューで Repository と Branch を選択し、⬇️ をクリック
![スクリーンショット 2024-06-07 10.38.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114743/44328c94-e381-3148-fa23-01b11d4ee00c.png)
1. 開いた Diff 画面から、Pull するファイルを選択し `Pull` をクリック
1. 1, 2秒？待つとスクリプトエディタの画面が更新されて Pull したコードが反映されます

### == おわり ==