在应用程序脚本Console.error函数中添加行麻木

时间:2019-03-04 11:42:07

标签: logging google-apps-script stackdriver

我正在使用console.error()函数记录由应用程序脚本制作的表格附件的错误。例如:

 1   var a = null;
 2   a.toString();
 3   } catch(error) {
 4           console.error('Function_1(): ' + error); 
 5         }

但是,我的函数很大,当出现类似“ can't use toString() on null”的错误时,我不确定问题出在哪里。

我尝试将其与throw一起使用:

1    var a = null;
2    a.toString();   
3    } catch(error) {
4           throw 'Function_1(): '+error; 
5          }

但是然后,我得到了抛出的行数: can't use toString() on null at line 4,而问题出在line 2

我查看了其他线程,例如: How do you pass back a custom error message from google apps scripts?

但是,它并不能回答如何提供正确的行号。

2 个答案:

答案 0 :(得分:2)

使用e.lineNumber,其中e是一个错误对象实例。示例:

function myFunction() {
  try {
    throw new Error('Error message');
  } catch(e) {
    console.error(e.lineNumber)
  }
}

注意:您可以使用e或任何其他适合您的编码样式的变量名称来代替error

相关

答案 1 :(得分:2)

如果您检查 let lang = this.$store.state.lang if(!lang){ lang = 'nl' } if (typeof name === 'object') { if (typeof name[lang] === 'string' && name[lang]) { // <- null is not an object (evaluating 't[e]') return name[lang] } return name['nl'] ? name['nl'] : '' } return '' 块收到的Error对象error,您会发现它具有几个可以访问的属性:

catch

Stackdriver日志示例:

enter image description here

因此,您可以在日志中包括错误的完整堆栈跟踪以及文件和行号:

try {
  ...
} catch (error) {
  const parts = {};
  for (var i in error) {
    parts[i] = error[i];
  }
  console.error({message: "Apps Script error object decomposition", error: error, parts: parts});
}