最近 GAS (Google Apps Script) を書く機会があって,Google 関連のリソースに簡単にアクセスできて便利だなー!と感じる反面,直接 js を書いて実行する開発プロセスに違和感を感じていた.普通に GitHub でバージョン管理して,継続的にデプロイする方法を探していたところ,専用の公式ツール gapps を知って,実際に使ってみたら便利だったので,紹介する.
gapps (node-google-apps-script)
gapps を使うと GAS を CLI でデプロイできるようになる.あまり難しいところはなく,README の通りに進めていけば使えるようになる.ザッと手順を残しておく.
gapps をインストールする
npm で簡単に使えるようになる.
$ npm install -g node-google-apps-script
$ gapps version
1.1.5
Google API Console でプロジェクトを作成して認証をする
事前に以下の設定が必要なため Google API Console でプロジェクトを作成する.今回は “gas-dmm” という名前にした.
- “Google Drive API” を有効にする
- OAuth 認証情報を取得する
“Google Drive API” は「有効にする」を選択しておく.
次に OAuth 認証情報を取得したら JSON をローカルにダウンロードする.
ダウンロードした JSON を引数に gapps auth
コマンドを実行すると URL が表示されるため,アクセスすると自動的に認証が完了する.
$ gapps auth xxx.json Please visit the following url in your browser (you'll only have to do this once): https://accounts.google.com/o/oauth2/auth?xxx Successfully Authenticated with Google Drive!
具体的には以下のメッセージが表示される.
You’ve been authenticated with Google Drive! You may close this page.
GAS を用意する
事前に GAS を用意しておく必要がある.GAS の URL に入ってる ID をコピーして gapps init
コマンドの引数にすると,自動的に gapps.config.json
が生成される.この gapps.config.json
は秘匿情報のため,必ず .gitignore
に含めること!
$ gapps init xxx
コードを書いてデプロイする
最後にコードを書いてデプロイする.gapps upload
コマンドで簡単にデプロイができる.
$ gapps upload
「DMM 英会話」のスケジュールを Google Calendar に同期する
今年から使ってる「DMM 英会話」で,1点残念なところを挙げるとすると「Google Calendar にスケジュールを同期できない」ところだと思う.個人的にスケジュールを振り返るために,今までは手動で登録していたけど,この作業を自動化したいと思った.
「DMM 英会話」の予約完了メールをトリガーに Google Calendar にスケジュール登録する GAS は既に公開されていて,非常に参考になった.個人的なユースケースとして,スケジュール名に「DMM 英会話」と「先生」の情報が入っていれば十分だったので,少し処理を減らしたりした.
コードを雑に push しておいた.
フロー図
gapps のことも含めると,ザッとこんなフロー図になる.
GAS を定期的に実行するにはトリガーを設定する必要がある.簡単!
まとめ
- gapps を使うと GAS の管理をアプリケーション開発のベストプラクティスに乗せることができる
- 「DMM 英会話」のスケジュールを自動的に Google Calendar に同期できる