2015-05-21

Google Apps Script で Gmail と Chatwork を連携させると便利

GAS (Google Apps Script) で Gmail と Chatwork を連携させると便利だったので備忘録を残しておきます。

ここでは Jenkinsビルド結果を Chatwork に通知する例を取り上げます。

前提として、あらかじめ Jenkins のビルド結果を Gmail に通知するフロー は整えておく必要があります。


大まかな手順


  1. Google Apps Script からプロジェクトを新規作成
  2. Resources > Libraries... に ChatWorkClient を追加 (プロダクトキー "M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT" で検索 cf. チャットワークAPI を Google Apps Script で使ってみた)
  3. Gist のスニペットを貼り付け
  4. Gmail のラベルおよびフィルタを設定する (上掲 Gist のコメントを参考に)
  5. 通知させたいメールにラベルを付与したあと、再生ボタンを押して Chatwork に投稿があればOK
  6. 時計マークのボタンを押して Timer Trigger として Gmail_Label_Chatwork_Notifier を1分間隔で登録 (下記画像参考)

    Timer Trigger 設定例

上記手順を踏んだ上で Jenkins のビルドをしてみると、結果が Chatwork へ投稿されていることを確認できます。


なぜGASなのか


自前でやろうとすると複雑になることをシンプルに実現できるためです。

  • Gmail の優秀なフィルタ機能を活用できる
  • JavaScript で投稿内容を加工できる (Max行など)
  • Jenkins メール配信は配信条件が妥当 (失敗ビルド、不安定ビルド、back to normal 通知) # back to normal 通知便利ですよね
  • Jenkins メール配信内容も妥当 (ビルドURL, 失敗時の出力結果)

しかし、back to normal 通知や投稿内容の加工など、そもそも多くを求めない場合は ChatWork Plugin を使うのが手っ取り早いはずです。

また、この方法のデメリットとしてビルド完了から最大1分ほどの遅延が発生しうることがあります。


GASスニペット





GAS使ってみた所感


GAS初めて使ってみましたが、自動化への貢献度が高そうで気に入りました。
Google Calendar の日時からイベント発火できれば便利そうなのでリファレンスを探してみましたが、残念ながら見つかりませんでした。


2016-05-24 追記


リファレンスを見てみたところカレンダー関連のAPIを発見しました!

Calendar Service  |  Apps Script  |  Google Developers

GAS、着実に進化していますね。


Author: @ymkjp