チームで GAS を管理するための環境を簡単に整えるためのリポジトリです
graph TD
A[リポジトリをクローン] --> B[Visual Studio CodeでRemote Containerを開始]
B --> C[コンテナ内で clasp create を実行]
C --> D[プロジェクトフォルダが作成される]
D --> E[コンテナ内で開発作業を行う]
E --> F[変更をコミットしGitHubにPush]
F --> G[GitHub Actionsが実行される]
G --> GA[GitHub Actionsで clasp push を実行]
GA --> H[.clasp.jsonが存在するフォルダに移動し `clasp push` を実行]
H --> I[Google Apps Scriptプロジェクトがデプロイされる]
このリポジトリはテンプレートリポジトリになっています。 Mit ライセンスで公開していますが、通常チームでこのリポジトリを用いて開発する場合、プライベートリポジトリでやるはずなので、Fork ではなくこのレポジトリをテンプレートとしてリポジトリを作成してください。
リポジトリを作成後ローカルにクローンして、ディレクトリに移動します。
git clone
cd docker-clasp-starterVisual Studio Code プロジェクトを開きます。
code .Cmd + Shift + P でコマンドパレットを開き、Remote-Containers: Reopen in Containerを選択します。
コンテナが開いたら、 postCreateCommand によって自動で npm install されます。
clasp loginnpm run create [project_name]これを実行することによって clasp-script.sh が動き、project_name という名前のフォルダが作成され、以下のツリー構造でプロジェクトが作成されます。
project_name
├── src
│ └── appsscript.json
└── .clasp.jsonそして、タイムゾーンが日本に設定されます。
project_name は任意の名前を指定してください。すでに存在するフォルダ名を指定すると、エラーが発生します。
直接 clasp を実行してしまうと、上記の処理が行われないので、必ず npm run create [project_name] を実行してください。
cd project_name
touch ./src/code.gsTypescript を使う場合は、以下のような ./src/code.ts を作成します。
Git リポジトリを Push すると GitHubActions で clasp push が行われますが、コンテナ内から直接 clasp push を実行することもできます。
ただし、 package.json が project_name フォルダに存在しない場合エラーになるので、これも Clone と同様に npm run push project_name を実行してください。
どこのディレクトリにいても project_name のプロジェクトを明示的に Push できます。
コンテナ内で clasp login を実行すると、/home/node/.clasprc.json. が作成されます。
このファイルを cat し、出力を全てコピーして GitHub のリポジトリの [Settings] => [Secrets and variables] => [Actions] => [New repository secret] に CLASP_TOKEN という名前で作成します。
cat /home/node/.clasprc.jsonリポジトリをプッシュすると、GitHub Actions で .clasp.json があるフォルダを全て探して、それぞれのフォルダで clasp push が行われます。
clasp login は必ずコンテナ内で行わないといけないわけではありません。別の端末などで作った .clasprc.json の内容を CLASP_TOKEN に設定しても構いませんし、手打ちでプロジェクトフォルダや .clasp.json を作っても構いません。
Clasp の開発環境セットアップや、プロジェクトの作成などを誰でもできるように、コンテナ内で行うように記載しております。
project1 フォルダはツリー構造を示すためのサンプルプロジェクトです。
不要であれば削除してください。
以下のドキュメントを参考に tsconfig.json を編集してください。
https://github.com/google/clasp/blob/master/docs/typescript.md