我正在嘗試將一個dumpObject函數添加到Spreadsheet Container綁定的腳本中。typeof在觸發器對象屬性上失敗
理想的情況下,它是可見性通過觸發器傳遞的變量。
我可以在腳本編輯器中整天運行它,但是當設置爲onEdit事件或onEdit Installible觸發器時,它會死亡並且沒有錯誤。
我做了一些試驗和錯誤敬酒消息,並確認正在從觸發執行中dumpObject的代碼。
如果你把下面這段代碼,設置onEdit2作爲可安裝扳機,你可能會看到它。
要查看它作爲觸發器工作,請取消onEdit2的第一行// e。
最好我可以認爲,是來自觸發器的e對象中的東西不是預期的對象?
此測試應該將maxDepth限制爲5,所以我認爲我沒有達到1000深度限制。
UPDATE:問題是在觸發器對象屬性上調用typeof。例如,「typeof運算e.user」報告以下錯誤:類型的JavaScript值無效
感謝, 吉姆
function onEdit2(e) {
//e = {fish:{a:"1",b:"2"},range:SpreadsheetApp.getActiveSpreadsheet().getActiveRange(),B:"2"};
Browser.msgBox(typeof e);
Browser.msgBox("U:" + Utilities.jsonStringify(e));
e.range.setComment("Edited at: " + new Date().toTimeString());
Browser.msgBox("ShowOBJ:"+dumpObject(e, 5));
}
function dumpObject(obj, maxDepth) {
var dump = function(obj, name, depth, tab){
if (depth > maxDepth) {
return name + ' - Max depth\n';
}
if (typeof obj === 'object') {
var child = null;
var output = tab + name + '\n';
tab += '\t';
for(var item in obj){
child = obj[item];
if (typeof child === 'object') {
output += dump(child, item, depth + 1, tab);
} else {
output += tab + item + ': ' + child + '\n';
}
}
}
return output;
};
return dump(obj, '', 0, '');
}
謝謝布萊恩,非常有幫助的調試技巧。 – JimCampbell