Google Apps Script で Log の出力をする際、
Google スプレッドシート上にログ出力をしたくなり、
調べたところ、peterherrmann/BetterLog: With one line of code, BetterLog extends the native apps script Logger and gives you automatic additional features like logging to a spreadsheet and more. というものがあり、使ってみた結果を記載します。
インストールと使い方
README.md
に記載はあるのでざっくり書きます。
プロジェクトキー
プロジェクトキー
MYB7yzedMbnJaMKECt6Sm7FLDhaBgl_dE
を指定すると、使用可能になります。
使い方
-
スプレッドシートのキー値を指定、スプレッドシートにログを書き出す 以下、スプレッドシートのキー値を指定すると、
スプレッドシートにログを吐き出すようにできます。
ログシート名は未指定なので、Log
シート にログを書き込みます。
// Add one line to use BetterLog Logger = BetterLog.useSpreadsheet('your-spreadsheet-key-goes-here'); //Now you can log and it will also log to the spreadsheet Logger.log("That's all you need to do");
-
スプレッドシート名を指定、スプレッドシートにログを書き出す
以下、スプレッドシートのシート名称を指定しています。
スプレッドシート名がnull
または、空だと、SpreadsheetApp.getActiveSpreadsheet();
が呼び出され、
アクティブなスプレッドシートが選択され、そのLogs
シートにログが書き込まれます。
ちなみに、シートがなければ作成され、シートが存在すれば、そのシートに書き込まれます。
ヘッダ固定にする設定とかまでしてくれるので、初回はライブラリ側の処理のおまかせする意味で、シートは存在しないほうがいいかと思います。
// Add one line to use BetterLog Logger = BetterLog.useSpreadsheet("", "Logs"); //Now you can log and it will also log to the spreadsheet Logger.log("That's all you need to do");
-
メッセージにパラメータを設定する
第一引数に%s
指定、第二引数以降に設定値を渡すことで、メッセージにパラメータを埋め込むことができます。
Logger = BetterLog.useSpreadsheet("", "Logs"); Logger.log("This is a %s", "pen"); ---------------------------------------------- 2017-08-05 23:26:13:593 +0900 005260 INFO This is a pen ----------------------------------------------
-
メッセージにjsonオブジェクトを設定する
ログのパラメータが Objectの場合も、ログ書き出しの前に、JSON.stringfy()
をしているようで、
大概のObject はログに書きだしてくれます。
Logger = BetterLog.useSpreadsheet("", "Logs"); Logger.log("This is a %s" , {"key" : "pen"}); ---------------------------------------------- 2017-08-05 23:28:17:970 +0900 000493 INFO This is a {"key":"pen"} ----------------------------------------------
-
ログの日付フォーマットを変更する
DATE_TIME_LAYOUT
の値を変更することで、ログの日付フォーマットの変更ができます。
日付フォーマットは、Utilities#formatDate
に指定可能なもの、
つまり java のSimpleDateFormat
に指定できる日付フォーマットが指定できます。
Logger = BetterLog.useSpreadsheet("", "Logs"); Logger.DATE_TIME_LAYOUT = "''"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "yyyy.MM.dd G 'at' HH:mm:ss z"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "EEE, MMM d, ''yy"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "h:mm a"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "hh 'o''clock' a, zzzz"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "K:mm a, z"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "yyyyy.MMMMM.dd GGG hh:mm aaa"; Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "EEE, d MMM yyyy HH:mm:ss Z" Logger.DATE_TIME_LAYOUT = "yyMMddHHmmssZ" Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" Logger.log("That's all you need to do"); Logger.DATE_TIME_LAYOUT = "YYYY-'W'ww-u" Logger.log("That's all you need to do"); ---------------------------------------------- 2017-08-06 00:03:16:163 +0900 000657 INFO registTaskManageData START 000739 INFO That's all you need to do 2017.08.06 AD at 00:03:16 JST 000822 INFO That's all you need to do Sun, Aug 6, '17 000903 INFO That's all you need to do 12:03 AM 000980 INFO That's all you need to do 12 o'clock AM, Japan Standard Time 001059 INFO That's all you need to do 0:03 AM, JST 001163 INFO That's all you need to do 02017.August.06 AD 12:03 AM 001272 INFO That's all you need to do 170806000316+0900 001371 INFO That's all you need to do 2017-08-06T00:03:16.956+0900 001450 INFO That's all you need to do 2017-08-06T00:03:17.048+09:00 001542 INFO That's all you need to do 2017-W32-7 001636 INFO That's all you need to do ----------------------------------------------
-
Logシートの最大行数を変更する
SHEET_MAX_ROWS
を指定することで変更可能です。
指定行数を超えると、過去ログのシートを持つスプレッドシートが作成されます。
Logger.SHEET_MAX_ROWS = 100;
-
Logシートのセル幅を変更する
SHEET_LOG_CELL_WIDTH
を指定することで変更可能です。
指定した結果セル幅が変わるかと思ったのですが、特に変わりませんでした..Logger.SHEET_LOG_CELL_WIDTH = 100;
-
Header部のメッセージを変更する
SHEET_LOG_HEADER
を指定することで変更可能です。
Logger.SHEET_LOG_HEADER = 'コマンド + ⬇️ と コマンド + ⬆️のクリックでトップ、ボトムに移動できます。';
-
JSON 文字列のスペース数を変更する
JSON_SPACES
を指定することで変更可能です。
Logger.JSON_SPACES = 2;
-
LogLevelを変更する
Logger.setLevel()
で指定できます。
ログレベルとして、以下の指定が可能です。var Logger = BetterLog.useSpreadsheet("", "Logs"); Logger.setLevel("WARN");
//ref http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html var Level = Object.freeze({ OFF: Number.MAX_VALUE, SEVERE: 1000, WARNING:900, INFO: 800, CONFIG: 700, FINE: 500, FINER: 400, FINEST: 300, ALL: Number.MIN_VALUE});
他のライブラリについて
Logger ライブラリ調べている最中に以下のサイトを見つけました。
Tools for developers - Google Apps Script Examples
個人的に、Create text from template - Google Apps Script Examples はちょっと使ってみようかなと思いました。
以上です。
コメント