kakakakakku blog

Weekly Tech Blog: Keep on Learning!

gapps を使って Google Apps Script を継続的にデプロイする

最近 GAS (Google Apps Script) を書く機会があって,Google 関連のリソースに簡単にアクセスできて便利だなー!と感じる反面,直接 js を書いて実行する開発プロセスに違和感を感じていた.普通に GitHub でバージョン管理して,継続的にデプロイする方法を探していたところ,専用の公式ツール gapps を知って,実際に使ってみたら便利だったので,紹介する.

developers-jp.googleblog.com

gapps (node-google-apps-script)

gapps を使うと GAS を CLI でデプロイできるようになる.あまり難しいところはなく,README の通りに進めていけば使えるようになる.ザッと手順を残しておく.

github.com

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 認証情報を取得する

console.developers.google.com

“Google Drive API” は「有効にする」を選択しておく.

f:id:kakku22:20170226030029p:plain

次に OAuth 認証情報を取得したら JSON をローカルにダウンロードする.

f:id:kakku22:20170226030256p:plain

ダウンロードした 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

f:id:kakku22:20170226031020p:plain

コードを書いてデプロイする

最後にコードを書いてデプロイする.gapps upload コマンドで簡単にデプロイができる.

$ gapps upload

「DMM 英会話」のスケジュールを Google Calendar に同期する

今年から使ってる「DMM 英会話」で,1点残念なところを挙げるとすると「Google Calendar にスケジュールを同期できない」ところだと思う.個人的にスケジュールを振り返るために,今までは手動で登録していたけど,この作業を自動化したいと思った.

「DMM 英会話」の予約完了メールをトリガーに Google Calendar にスケジュール登録する GAS は既に公開されていて,非常に参考になった.個人的なユースケースとして,スケジュール名に「DMM 英会話」と「先生」の情報が入っていれば十分だったので,少し処理を減らしたりした.

yoonchulkoh.hatenablog.com

コードを雑に push しておいた.

github.com

フロー図

gapps のことも含めると,ザッとこんなフロー図になる.

f:id:kakku22:20170224234002p:plain

GAS を定期的に実行するにはトリガーを設定する必要がある.簡単!

f:id:kakku22:20170226032415p:plain

まとめ

  • gapps を使うと GAS の管理をアプリケーション開発のベストプラクティスに乗せることができる
  • 「DMM 英会話」のスケジュールを自動的に Google Calendar に同期できる

f:id:kakku22:20170226033953p:plain