LoginSignup
7
7

More than 5 years have passed since last update.

gapps + git で Google Apps Script をローカルで開発してバージョン管理する

Posted at

gapps(node-google-apps-script)を利用して Google Apps Script をローカルで開発する方法のメモです。好みのエディタで開発できるようになることに加え,ローカルのプロジェクトディレクトリを Git で管理することによりバージョン管理ができるようになります。

gapps の導入

Node.js をインストール

gapps には Node.js v0.12.x 以降が必要とのことです。公式サイトのインストーラーを使ってもいいですが,Windows では Chocolatey でもインストールできます。

PS> choco install nodejs.install

node-google-apps-script をインストール

npmnode-google-apps-script をインストールします。これで gapps コマンドが使えるようになります。

$ npm install -g node-google-apps-script
$ gapps --version
1.1.15

Google Drive Credentials の取得

Google Drive API を有効にして,OAuth 2.0 クライアント ID を取得して認証します。README には 2 通りの方法が書かれていますが,要は Google Developers Console に適当なプロジェクトを用意して,そのプロジェクトで設定を行えばよいということのようです。

Cloud Platform プロジェクト

Google Developers Console で新規プロジェクトを作成するか,Google Apps Script に関連づけられたプロジェクトを開きます。

Google Apps Script に関連づけられたプロジェクトを開くには,メニューから[リソース]→[Cloud Platform プロジェクト...]を開き,表示されたダイアログの[API コンソールを表示]ボタンをクリックします。

001.png

002.png

Google Drive API を有効にする

左上のハンバーガーメニューから[API とサービス]→[ライブラリ]を開き,[G Suite]のカテゴリにある[Google Drive API]を選択して[有効にする]ボタンをクリックします。

003.png

004.png

005.png

OAuth 2.0 クライアント ID を作成する

左上のハンバーガーメニューから[API とサービス]→[認証情報]を開き,[認証情報]タブの[認証情報を作成]ボタンをクリックして,[OAuth クライアント ID]を選択します。

006.png

007.png

[アプリケーションの種類]は[その他]を選び,名前を適当に入力して[作成]ボタンをクリックします。

008.png

gapps の認証

シークレットをダウンロードする

OAuth 2.0 クライアント ID の一覧で右側のダウンロードアイコンをクリックし,JSON ファイルとして保存します。

009.png

ファイル名は client_secret_xxxxxxxx.apps.googleusercontent.com.json のようになっています。

gapps で認証コマンドを実行する

コマンドを実行すると,認証用の URL が表示されます。

$ gapps auth /path/to/credential.json

Please visit the following url in your browser (you'll only have to do this once): ...

ブラウザでアクセスして許可を与えると,以下のようなメッセージが表示されます。

You've been authenticated with Google Drive! You may close this page.

Mac や Linux では $HOME を,Windows では %USERPROFILE% を確認して .gapps ファイルが出来ていれば認証完了です。どうやら Windows 環境では %HOME% 環境変数を設定していても参照してくれないようです。

ローカルで開発する流れ

スクリプトのファイル ID をコピー

ローカルで開発したいスクリプトを Google Drive で開き,URL に含まれているファイル ID をコピーします。以下の xxxxxxxx の部分です。

https://script.google.com/d/xxxxxxxx/edit

ダウンロード

プロジェクトを管理するディレクトリへ移動し,先ほどコピーしたファイル ID を引数に渡して gapps init を実行します。

$ cd /path/to/project
$ gapps init xxxxxxxx

gapps.config.json という設定ファイルと src ディレクトリが作成されます。

$ tree
.
├── gapps.config.json
└── src
    └── コード.js

1 directory, 2 files

gapps.config.json にはソースが格納されているディレクトリとファイル ID が保存されています。ファイル ID が含まれているので,プロジェクトを Git で管理する場合は .gitignore に追加しておいた方がよさそうです。

なお,Git で管理する場合,新しい PC でクローンした後は,このファイルをコピーしてくれば gapps init を実行しなくても Google Drive へのアップロードができるようになります(もちろん gapps の導入と認証は必要ですが)。

$ cat gapps.config.json
{
  "path": "src",
  "fileId": "xxxxxxxx"
}

アップロード

ローカルでの変更を Google Drive に反映させるには gapps upload を実行します。

$ gapps upload
Pushing back up to Google Drive...
The latest files were successfully uploaded to your Apps Script project.

Git でバージョン管理

ローカルリポジトリを初期化して,リモートリポジトリを追加します。

$ cd /path/to/project
$ git init
$ git remote add origin git@github.com:username/project.git

gapps.config.json にはファイル ID が含まれているので .gitignore に追加しておきます。

$ echo gapps.config.json > .gitignore

あとは普通に開発するだけです。

$ git add .
$ git commit -m "Initial commit"
$ git push origin master

2 台目以降で開発する場合は,まず gapps の導入と認証を済ませます。その後は,上記と同じ手順(gapps initgit initgit remote add)を繰り返してもよいですし,あるいは単にクローン後に gapps.config.json をコピーしてくるだけでも大丈夫なようです。

参考

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7