google
GoogleAppsScript
gas
log
stackdriver

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');
}

image.png

実行&ログを確認

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

View > Stackdriver Logging

image.png

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

Stackdriver Logging 基本のキ

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

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

Stackdriver Error Reporting

動作確認用コード

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

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

image.png

実行&ログを確認

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

View > Stack Driver Error Reporting

image.png

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

image.png

Stackdriver Error Reporting 基本のキ

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

image.png

  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');
}

image.png

画面キャプチャ

Stackdriver Logging

image.png

Stackdriver Error Reporging

image.png

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

参考サイト

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


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

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