Google Apps Script でconsole.logを使う場合の注意点

Google Apps Script でconsole.logを使う場合の注意点

先日Google Apps Script て開発をしていて戸惑ったのでシェアします。

ブラウザのエンジンで動くJavaScriptのconsole.log()とは大きく2点異なります。

知らずに使っているといろんな意味で事故に遭う可能性もあると思うので、

わかりやすくリファレンスとかに書いておいて欲しかった・・・。

(見落としているだけで書いてあるかも)

注意点1:無料ではない

無料枠はあるものの・・・

ブラウザのJavaScriptと同じイメージで使っていたのでびっくり。

公式リファレンスを見て偶然発見しましたが、Google Cloud PlatformのStackdriver Logging というサービスに出力されるとの事。

Stackdriver Logging の料金プランはこちらから

ありがたい事に毎月の無料枠も設定されており、相当な事が無い限りは超えないと思われますが、アラート等設定して気をつけておきたい所

金額を気にしたくない場合は、Logger.log()を使いましょう。

というか、大抵の場合、Logger.log()で問題ない気がしています。

注意点2:ログの出力順が担保されていない(?)

forループで出力順を確認

単純に1から10まで出力する下記のスクリプトを用意。

function myFunction() {
  for (var i=1; i<=10; i++){
    Logger.log(i);
    console.log(i);
  }
}

出力ログがコチラ。

???

1から10まで順番に表示されるはずが、何だこの順番は・・・。

試しにLogger.log()で確認すると、

OK、問題なし。

恐らく、Logger.log()の方はミリ秒単位まで表示されているのに対し、console.log()は秒単位までしか表示されていない事から、

出力順序の正確なソートができないのではないかと。

おわりに

注意点1でも書きましたが、やはり「よっぽどの理由」が無い限りはLogger.log()を使うのがよさそう。

「よっぽどの理由」はパッと思いつくところだと、デバッグ用ではなく、長期的な蓄積を目的としたログの出力か。

うーん、でも出力順が担保されていないのは、やっぱり使いにくいような気がする・・・。

Google Apps Scriptカテゴリの最新記事