# 初回リポジトリ作成方法
## 最終的なファイル構造
```
Repository
│
├── .github
│ └── workflows
│ └── deploy.yml
├── src
│ ├── appsscript.json
│ ├── *.js
│ └── *.js
├── .clasp.json
└── README.md
```
## 利用ツールインストール方法
### gitをインストール
windows
([ダウンロード](https://gitforwindows.org/))
mac
`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
### claspをインストール
`npm install -g @google/clasp`
```
clasp -v [インストールの確認]
clasp login [※必須 googleアカウント(自分のアカウントで可)の紐付けを行う]
```
> 詳しくは、 ([公式](https://github.com/google/clasp))を見てください。
>
> 一応、npmのインストール方法も
> node.jsインストール ([ダウンロード](https://nodejs.org/ja/))
> npmインストール (`sudo npm install -g npm`)
## 初回リポジトリ作成手順
1. `git clone https://github.com/system-team-orgiast/directory-frame.git`
2. `clasp clone <scriptURL>`
3. `mv *.js appsscript.json src/`
4. .clasp.json のrootDirでルートディレクトリを "./src" に変更
例:`{ "scriptId": "スクリプトID", "rootDir": "./src" }`
6. README.mdを書く(テンプレートはgit clone済)
7. 新しいリポジトリを作成してgithubにpushする
```
git add .
git commit -m "first commit"
git remote set-url origin <リポジトリURL>
git push origin main
```
9. Action Secretの設定
```
mac: open ~/.clasprc.json
windows: start ~/.clasprc.json
```
上記コマンドでjsonファイルを確認して、 [ACCESS_TOKEN, ID_TOKEN, REFRESH_TOKEN, CLIENT_ID, CLIENT_SECRET] をgithubのリポジトリ上のAction Secretで設定する
7. 完成(mainブランチにpushもしくはマージを行うと自動デプロイされます)
---
## 余談(GAS開発のススメ)
1. Code formatter(Prettier) を利用してコードを整形する(下記参考)
2. スプレッドシートやフォームにapiを叩くのは、入出力でなるべく1回ずつにする(X:setValue() → ○: setValues() )
3. varを使わない。大半をconstにして一部編集する必要があるものは、letを使う
4. map(), filter(), reduce()を使って、forEachやforを使わない([参考URL](https://qiita.com/diescake/items/70d9b0cbd4e3d5cc6fce))
```
GAS用Prettierのおすすめオブション ※個人的
# .prettierrc
{
"printWidth": 140,
"tabWidth": 2,
"useTabs": true,
"singleQuote": true,
"quoteProps": "as-needed",
"jsxSingleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"arrowParens": "avoid",
"proseWrap": "preserve",
"endOfLine": "auto"
}
```
# github導入
## メリット
- 修正後のエラーに強い。以前のバージョンにすぐに戻せる
- googleスプレッドシートのファイルは誰でも編集でき、エラーが出てしまったら、再度作り直しになる可能性がある。githubがあると復元可能。
- 誰がどこのコードを書いたかわかる
- 下手なコードを書いても、触れた箇所がわかるため、レビューや修正を行いやすい
- 責任の所在がわかる
## デメリット
- 初学者の場合は、かえって作業時間が増加してしまう