1

我刚刚在电子表格脚本编辑器中将我的 1800 行项目分成 12 个“文件”。我注意到 Find 功能只在活动文件中查找。

无论如何要进行全局查找吗?

也与项目中的文件有关,当引发错误时,将引用行号而不是文件名。

有没有办法确定哪个文件包含导致错误的行?

谢谢丹

4

2 回答 2

2

要确定导致错误的文件,您必须尝试捕获错误并解析堆栈跟踪。这是我所做的:

function yourCallingfunction() {
  try {
    //do your thing
  } catch(err) {
    stack = parseErr_(err)
    Logger.log(stack);
    throw stack;
  }
}

//Try to parse errors stacktrace into a nicer format
function parseErr_(e) {
  var ret;
  if( e !== undefined && e !== null && e.stack ) {
    ret = e.name +': '+e.message+' \nStacktrace: \n';
    var stack = e.stack.replace(/\n/g,'').match(/:\d+( \([^\)]+\))?/g);
    for( var i in stack )
      ret += stack[i].replace(/[\(\):]/g,'').split(/ /).reverse().join(':') + ' \n';
  } else
    ret = e;
  return ret;
}

关于全局查找,如果您的问题只是查找而不是替换,也有解决方法。看看这个:

function showMe() {
  for( var i in this )
    Logger.log(this[i].toString());
}

但这些都不是实际的解决方案。您应该为@ScampMichael 链接的问题加注星标

于 2012-05-11T21:43:48.257 回答
2

没有办法进行全局查找。Find 只会在当前文件中查找。我同意应该有一个贯穿整个项目的查找和替换,我于 2011 年 9 月在问题跟踪器中提交并发布:

http://code.google.com/p/google-apps-script-issues/issues/detail?id=822

请去那里给它加星标以投票并收到有关此问题的任何进展的通知。

问题跟踪器中也提出了没有报告错误消息的文件名问题:

http://code.google.com/p/google-apps-script-issues/issues/detail?id=747

于 2012-05-11T18:49:51.447 回答