我刚刚将1800行项目划分为电子表格脚本编辑器中的12个“文件”。我注意到Find函数只在活动文件中查找。
有没有做全球发现?
还与项目中的文件有关,当引发错误时,引用行号但不引用文件名。
有没有办法确定哪个文件包含导致错误的行?
由于 丹
答案 0 :(得分:2)
无法进行全局查找。查找只会查看当前文件。我同意应该有一个可以横向整个项目的查找和替换,我在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
答案 1 :(得分: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
链接的问题加注星标