Logger.log() や Utility.formatString() などの一部の Google Apps Script 関数は、無制限の引数を受け入れます。
Logger.log() または Utility.formatString() への呼び出しをラップして、最も内側の関数呼び出しで、結果の文字列の前にタイムスタンプと独自のテキストを付けることができるようにします。通常は.apply
、現在のモジュールの ags を関数に渡すだけですが、私のテストでは期待どおりに動作しません。Java/サーバー側からのものと思われるエラーTypeError: Cannot find default value for object. (line 14, file "Code")
が発生します。
テストに使用したコードは次のとおりです。質問:
- これはこれらの Apps Script メソッドのバグですか?
- 私の目的を達成するための回避策または代替方法はありますか?
バグの場合は、Issue Tracker Tracker にもファイルします
function testMyLogger() {
myLogger('Testing %s %s %s', 'one', 2, 'three');
}
function myLogger() {
// do common things like prefix a timestamp to the first arg
var logdate = Utilities.formatDate(new Date(), Session.getTimeZone(), "yyyy-MM-dd HH:mm:ss");
arguments[0]= logdate + " " + arguments[0];
Logger.log.apply(this, arguments);
// At the above line I get error "TypeError: Cannot find default value for object. (line 14, file "Code")"
// but I expected '<timestamp> Testing one 2.0 three' to the log (View > Logs...)
}