5

私のスクリプトには、エラー メッセージに関するメールを送信するいくつかの try-catch ブロックがあります。動作しますが、単純な 1 行のエラー メッセージしか送信されません。私が欲しいのは、エラーの周りの行番号と、エラーが発生している場所を特定するのに役立つより説明的なメッセージです。

4

2 に答える 2

12

これを試すことができます (どこかで盗みました)。最初に、キャッチされた例外のすべての情報を文字列に変換します。2 番目の関数は、一部のコードをラップするために使用でき、excetopn がスローされた場合はどこかに書き込みます。

function catchToString (err) {
  var errInfo = "Catched something:\n"; 
  for (var prop in err)  {  
    errInfo += "  property: "+ prop+ "\n    value: ["+ err[prop]+ "]\n"; 
  } 
  errInfo += "  toString(): " + " value: [" + err.toString() + "]"; 
  return errInfo;
}
function catched (f) {
  try {
    f ();
  }
  catch(err) { 
    Logger.log (catchToString (err));
  }
}
于 2012-12-05T07:04:45.350 に答える
0

上記の解決策は私にはうまくいきませんでしたが、次の記事を見つけました: https://sites.google.com/a/mcpher.com/share/Home/excelquirks/gassnips/whereami

テストする最も簡単なコード スニペットは次のとおりです。

function testError() {
  try {
    SpreadsheetApp.openById('Boooo');  
  } catch(err) {
    Logger.log(err.stack);
  }
}

この情報をログに記録します:

Exception: Unexpected error while getting the method or property openById on object SpreadsheetApp.
at testError (#Triggers:164:20)
at __GS_INTERNAL_top_function_call__.gs:1:8

コード行 (164)、ファイル (#Triggers)、および関数名 (testError) はこちらです。

このライブラリ ( https://github.com/RomainVialard/ErrorHandler )も試しましたが、より簡単な解決策を探しました。

于 2020-04-29T06:06:04.490 に答える