GoogleAppsScript
gas

Google Apps Script(GAS) でファイルにログ出力できるライブラリを作りました

Google Apps Script(GAS)。サーバいらずで、色々なプログラムが書けるので、結構利用する機会があると思う。
インターン生にサーバを提供せずにSlackのbotを作ってもらうときなどに非常に楽。

しかし、ログをファイルに出力するという普通のサーバプログラムでは当たり前のようなことも、結構面倒だった。
探しても簡単に実現できそうなライブラリがなさそうなので、自分で作ってみた。

Google Apps Script(GAS) 用ファイルへのログ出力ライブラリ FileLogger

下記 Github で公開しました。
https://github.com/seteen/google-apps-script-file-logger

何ができる?

ログ用のファイルを自動で、スクリプトと同階層のフォルダに作成し、そこに対してログ出力が追記されるようになる。
自動でログがファイルに出力されるので、例えば何かしらのエラーが発生したときなどにログが参照できるようになります(通常のサーバプログラムでは当たり前に存在する機構)。

インストール

Google Apps Script の画面で、
メニューの
リソース -> ライブラリ
と選択。
ライブラリを追加、の入力に下記を入力して追加ボタンを押す。

1bWIXL3PmJQdgAjvUxY_qxStfTIdIMe7qwIqHq78XXzL3zyyVuhVvhI1S

バージョンは最新に指定。

仕様

FileLogger は、関数をひとつだけ持つというシンプルなものにした。

FileLogger.logging(callback)

FileLogger.logging は パラメータとして callback を持つ。
この callback が終わった時に、それまでに Logger (Google Apps Script標準のロガー) で出力されたログを全てファイルに吐き出す。
出力されるファイルは、実行スクリプトがあるフォルダーに script.log という Google Document で作成される。
もしすでに script.log が存在する場合は、ログが追記され、存在しない場合は作成されてログが書き込まれる。

使い方

使い方はこんな感じ。例えば、 myFunction というのが実行したい関数だとすると、下記のような書き方をする。

function myFunction() {
  FileLogger.logging(function(){
    // your code here.
    Logger.log('test log');
  });
}

こうすることで、 test log というログが script.log に書き込まれる。

もっと工夫したらもっと便利なものができるのかもしれないが、こういう機能が欲しい、という人はGithubにIssueを作るかPRを出してくれるとはかどります。