我剛剛在電子表格腳本編輯器中將我的1800行項目劃分爲12個「文件」。我注意到Find函數只在活動文件中查找。腳本編輯器/文件
有無論如何去做一個全球性的發現?
還與項目中的文件有關,當引發錯誤時,會引用行號但不是文件名。
有沒有辦法確定哪個文件包含導致錯誤的行?
感謝 丹
我剛剛在電子表格腳本編輯器中將我的1800行項目劃分爲12個「文件」。我注意到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
要確定導致錯誤的文件,你必須嘗試 - 捕獲錯誤並解析堆棧跟蹤。這是我做的:
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鏈接的問題添加星標
這是一些非常有趣的代碼,謝謝Henrique!我從這幾行代碼中學到了很多東西。我主演了與此相關的兩個問題。 – Dan
@亨利克爲什麼你'扔堆',而不是拋出你被抓到的錯誤? –
@PeterHerrmann所以我不必打開腳本日誌來查看堆棧。它就在信息上。當然,只有在堆棧中的最後一個函數上執行此操作時,如果我沒有其他任何與錯誤有關的操作。在我的觸發器和「完成」腳本中,我通常只是通過電子郵件發送給我,加上我可以獲得的所有當前狀態。 –
謝謝ScampMichael!我兩個都出演。 – Dan