
photo credit: shixart1985 Pieces of wood logs stack wall as a background via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
さて、みなさんはGoogle Apps Scriptの開発や動作確認で「ログ」って使いますよね?
みなさん大好き「Logger.log」を使われることが多いと思うのですが、実は「console.log」をはじめとする「consoleクラス」のメソッド群も便利に使えるということは知っていますか?
それで、おそらくここ最近だと思いますが、それらがApps Script ダッシュボードでも確認できるようになり、ぐっと使いやすくなりました。
ということで、今回から何回かに分けて、GASの実行ログを確認するconsoleクラスのメソッドを紹介していきます。
まず、Apps Scriptダッシュボードでconsoleクラスによるログ出力を確認する方法です。
では、行ってみましょう!
consoleクラスとは?
「consoleクラス」というのは、GASのスクリプトの実行ログを記録するための機能を提供するクラスです。
みなさんおなじみの「Loggerクラス」と同じく、Script Servicesの「Baseサービス」というところに分類されていまして、いわばGASで横断的に使う基本中の基本の機能という位置づけです。
Logger.logではダメなの?
多くの場合、ログの確認は「Logger.log」でも事足ります。
ただ、例えば時限式トリガーで実行した場合は、doGetやdoPostなどリクエストを受けて動作をさせた場合などを思い出してください。
それら一部のトリガーで動作させた場合、スクリプトエディタを開いて、ログを確認することができませんよね。
また、次に実行すると以前のログは消えてしまいます。
consoleクラスのログのメリット
そんなときに、「console.log」をはじめとする、consoleクラスのメソッドを使うわけです。
- 各種トリガーで動作した場合のログも記録できる
- 過去7日間のログを残しておくことができる
…おお、使わない手はないですね!!
ただ、なぜ今まであまりフィーチャーされていなかったのか…
実は、これまでconsoleクラスのログ出力先は、GCPのStackdriver Logging(と、Stackdriver Error Reporting)だったんです。
いや、だからといって有料とか、使いづらいとか、そういうことはなかったのです。
consoleクラスのログがApps Script ダッシュボードで確認できる
ただ、おそらく最近になって、consoleクラスのログ出力がApps Script ダッシュボードでも確認できるようになりました。
ある日、何の気なしに、スクリプトエディタから「表示」 > 「Stackdriver Logging」を開こうとするとこんなメッセージが。
そこには
「ダッシュボードで表示」
Apps Script ダッシュボードで、このプロジェクトの Stackdriver ログを確認できるようになりました。Google Cloud Platform でこれらのログを確認したい場合は、この Script 用に別のプロジェクトを設定する必要があります。
とあるじゃないですか。まじか!?
「Stackdriver Error Reporging」を開こうとしても、同様のメッセージが。
ということで、「Apps Script ダッシュボード」はいつもトリガーの設置などで使い慣れているところですから、これを機に触ってみましょう!
consoleクラスのメソッド
Loggerクラスにはlogメソッドしかありませんが、consoleクラスでは複数のメソッドが提供されています。
メソッド | レベル | 説明 |
---|---|---|
console.log(format, values) | DEBUG | システムの動作状況に関するログ |
console.info(format, values) | INFO | 何らかの注目すべき情報 |
console.warn(format, values) | WARN | 警告。エラーとは言い切れないが近い事柄 |
console.error(format, values) | ERROR | エラーに関する事柄 |
4つとも、基本的な機能は一緒です。
formatには、Logger.logと同様にフォーマット文字列を指定できます。
その文字列に含む「%s」などをプレースホルダーとして、valuesに指定した複数の引数を順番に入れ込んで出力します。
ログレベルとは
さて、これら4つのメソッドの何が違うかというと「ログレベル」です。
重要度や緊急度によってレベル分けがされているんですね。
上のほうがライトな確認用、下にいくほどヤバいレポートとなるわけです。
warnメソッド、errorメソッドあたりは、try~catchなどと組み合わせて使うことが多いんですかね。
consoleクラスのログ出力を確認する
では、実際にこれらconsoleクラスのログ出力について、確認してみましょう。
function logTest() { console.log('%s レベルのログ: %s', 'DEBUG', 'ログの内容'); console.info('%s レベルのログ: %s', 'INFO', 'ログの内容'); console.warn('%s レベルのログ: %s', 'WARN', 'ログの内容'); console.error('%s レベルのログ: %s', 'ERROR', 'ログの内容'); }
実行!
それで、Apps Scriptダッシュボードのログ確認へスムーズに行くには、スクリプトエディタの「表示」 > 「実行数」が最も近道ですね。
するとApps Scriptダッシュボードが開いて、先ほどの実行結果が表示されているので、クリックして展開します。
すると、以下のように各メソッドによるログが確認できます。
しかも、エラーは赤、警告はオレンジに色分けされるんですね。見やすい…!
まとめ
以上、Apps Scriptダッシュボードでconsoleクラスによるログ出力を確認する方法をお伝えしました。
トリガーを駆使するスクリプトはもちろん、少し規模のあるプロジェクトだと重宝しそうですね。
ただ、consoleクラスの便利機能…まだあります。
次回は、オブジェクトをログで確認する方法をお伝えします。
どうぞお楽しみに!