GAS と Stackdriver(Logging, Error Reporting) を連携させる


Apps Script Advent Calendar 2017に App Maker 記事ばっかり書いてきたけど最後の日なので GAS ネタを書く。

以前 GAS のログ出力方法について記事を書いたのだけれど、このときは Stackdriver についてよく知らなかったので、Googleドキュメントに出力するというやり方で書いた。
Google Apps Scriptのログ設計 #gasja - Qiita

上記記事を書いた後に Stackdriver を使う機会があって、こいつはかなり便利 というのがわかったので Stackdriver と連携させるとどんな感じなるのかを解説する。

Stackdriver

Stackdriver には3種類ある。

  • Stackdriver Logging
  • Stackdriver Error Reporting
  • Stackdriver Monitoring

本記事では Logging を使ったログ出力と、Error Reporting を使ったエラー報告(通知)について記述する。1

Stackdriver Logging

console を使ってログを出力

ログを出力するには console を使う。

動作確認用コード

次のような logTest function を作成する。
※異なる log level 出力と、時間計測用の time, timeEnd が用意されている。

Code.gs
function logTest() {
  console.time('LABELA');
  console.log('log');
  console.info('info:%s', 'フォーマットを指定することも可能');
  console.warn('warn');
  console.error('error');
  console.timeEnd('LABELA');
}

実行&ログを確認

Run > Run Function で logTest 実行し、次の手順でログを確認する。

View > Stackdriver Logging

すると次のようなログを確認できる画面が表示される。

Stackdriver Logging 基本のキ

本記事は Stackdriver Logging の説明をするのが主旨ではないので最低限の事だけ記載しておく。2

  1. ログを更新(再取得)
  2. ログを自動で更新(自動で再取得)
  3. 簡易フィルター
  4. 高度なフィルター
  5. ログレベルでフィルター
  6. 時間でフィルター
  7. ログ表示方法を変える(自動で展開/降順昇順)
  8. 展開

Stackdriver Error Reporting

動作確認用コード

次のような errorReportTest function を作成する。
※catch されなかった throw が Error Reporting に入ってくる。

Code.gs
function errorReportTest() {
  throw 'エラーのテスト';
}

実行&ログを確認

Run > Run Function で errorReportTest 実行し、次の手順でエラーを確認する。

View > Stack Driver Error Reporting

すると次のようなエラーを確認できる画面が表示される。

Stackdriver Error Reporting 基本のキ

本記事は Stackdriver Error Reporting の説明をするのが主旨ではないので最低限の事だけ記載しておく。

  1. ステータスでフィルター(6と関連)
  2. エラーレポートを自動で更新(自動で再取得)
  3. エラーをメールで通知する
  4. フィルター
  5. 時間でフィルター
  6. ステータスを変更

ステータスは、解決したら Resolved に変更して一覧から消す、みたいな使い方をする。

Logging と Error Reporting を利用したコード例とキャプチャ

それぞれを利用したコード例を記載する。
Google Apps Scriptのログ設計 #gasja - Qiitaで書いたコードと比較して圧倒的にスッキリしているのがわかるかと思う。

コード

Code.gs
function myFunction() {
  console.info('myFunctionStart');

  // ここにメインの処理

  throw 'エラーが発生1';
  console.info('myFunctionEnd');
}

画面キャプチャ

Stackdriver Logging

Stackdriver Error Reporging

ちなみにメール通知をONにするとこんな感じ

参考サイト

Class console  |  Google Apps Script
Stackdriver Logging  |  Google Cloud Platform
Stackdriver Error Reporting  |  Google Cloud Platform


  1. GAS で Monitoring までつかうことはあんまりないかと 

  2. ログを Cloud Storage に出力したりとか本当に色々出来る(色々手を出すとお金もかかってくるが)