導入背景
プライベートでGASを使用した得点計算ツールを開発しているが
ソースコード自体はGAS上で管理しなければならず
プロジェクトで共有するには少々使い勝手が悪く困っていました。
そこで、ソースコードの変更履歴を追跡し
複数の開発者との共同作業に適した分散型バージョン管理システムのGithubに
GASのソースコードを運用することにしました。
GitHubの環境構築手順
①. GitHubアカウントの作成
GitHubにアクセス
Sign up ボタンをクリックしてアカウント作成(詳細は割愛)
②. Gitのインストール
gitのGUI操作を行うための準備。
公式サイト からGitをダウンロードし、インストール
ターミナルやコマンドプロンプトを開き、以下のコマンドでGitの設定を行う
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
GASとの連携環境構築手順
Google Apps Scriptのプロジェクトをローカルで管理するために
clasp というCLIツールをインストールします。
clasp を使用するためには、事前にNode.js(および関連するパッケージマネージャーのnpm)をインストールする必要があります。
1. Node.jsのインストール
まず、Node.jsの公式サイトから適切なバージョンをダウンロードしてインストールします。
インストールすると、node と npm(Node.jsのパッケージマネージャー)の両方が利用できるようになります。
2. clasp のインストール
Node.jsをインストールした後、以下のコマンドを使用してclaspをインストールします
npm install -g @google/clasp
このコマンドにより、clasp がグローバルにインストールされ、どのディレクトリからでもアクセスできるようになります。
3. claspにログイン
下記コマンドでgoogle認証を行います。
これでgoogle上の環境とファイルやり取りが可能になります。
clasp login
ローカルとGoogle Apps Scriptとでソースコードをやり取りする手順
①プロジェクトのクローン(複製)
既存のGASプロジェクトが存在する場合、GASのIDを指定して、プロジェクトをローカルにクローンします。
clasp clone [scriptID]
②ローカルからGASへのプッシュ(アップロード)
ローカルの変更をGASプロジェクトにプッシュします。
通常、プッシュはプルリクエスト承認後に管理者が実施します。
clasp push
③GASからローカルへのプル(ダウンロード)
GASのオンラインエディタでの変更をローカルにプルします。
clasp pull
ローカル環境でGithubを運用する手順
①リポジトリのクローン(複製)
リポジトリのURLがわかっている場合、以下のコマンドでローカル環境にクローンできます。
git clone [リポジトリのURL]
②ローカルリポジトリに移動
cd [リポジトリ名]
③ 最新の変更を取得
リポジトリをクローンした後、または既にクローンしている場合、プルを行うことで最新の変更を取得できます。
git pull
④ブランチを作成する
通常、mainブランチ上で作業を行うことはありません。
mainブランチから新しくローカルブランチを作成して作業を行い
最終的にmainブランチへソースファイルのプッシュを行います。
git checkout -b [新しいブランチ名]
実行例
$ git checkout -b "test"
Switched to a new branch 'test'
⑤変更を反映する
git add [変更したファイル名] # 特定のファイルのみ
# または
git add . # 全ての変更をステージング
⑥変更をコミットする
git commit -m "[変更内容の説明]"
実行例(test.jsを作成&ステージングした後にコミット)
$ git commit -m "test"
[test cd1a1bf] test
1 file changed, 3 insertions(+)
create mode 100644 test.js
⑦変更をリモートリポジトリにプッシュする
git push -u origin [新しいブランチ名]
実行例
$ git push -u origin test
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 552 bytes | 552.00 KiB/s, done.
Total 6 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3), completed with 2 local objects.
remote:
remote: Create a pull request for 'test' on GitHub by visiting:
remote: https://github.com/rakisuto/GAS_Tools/pull/new/test
remote:
To https://github.com/rakisuto/GAS_Tools
* [new branch] test -> test
branch 'test' set up to track 'origin/test'.
⑧mainブランチへのプルリクエストを行う
Githubのwebページ上でプルリクエストを発行する。
Compare & pull requestを実行
メッセージを入力して create & pull requestを実行
オーナーはプルリクエストを確認し、問題なければMerge pull requestを実行
これでmainブランチにtest.jsがマージされました。