У меня есть простой код скрипта Google Apps, такой как:
function throwsError(){
var inboxThreads = GmailApp.getInboxThreads();
var sliceArr = inboxThreads.slice(0, 3);
Logger.log(sliceArr.length);
for each (var thread in sliceArr){
Logger.log(inboxThreads.containsThread(thread));
}
}
function doesNotThrowError(){
var inboxThreads = GmailApp.getInboxThreads();
var sliceArr = inboxThreads.slice(0, 3);
Logger.log(sliceArr.length);
for (var i = 0; i < sliceArr.length; i++){
Logger.log(inboxThreads.containsThread(sliceArr[i]));
}
}
Array.prototype.containsThread = function(thread){
Logger.log("Here");
Logger.log(thread);
return this.filter(function(t){ return t.getId() == thread.getId(); }).length > 0;
}
Как показывают названия функций, throwsError()
выдает ошибку TypeError: Cannot find function getId in object function (thread) {...}.
.doesNotThrowError()
работает без проблем.Единственное различие между ними заключается в том, что один использует цикл for
, а другой - цикл for each
.
Вывод журнала throwsError()
выглядит следующим образом:
Кажется, в моем массиве sliceArr
всего 3 элемента, но containsThread
вызывается 4 раза.(Кроме того, в четвертый раз кажется, что она передает функцию containsThread
в себя в качестве параметра).Есть идеи, что может быть причиной этого?
Я склоняюсь к тому, что это ошибка в Google Apps Script, но я хотел бы проверить здесь на случай, если кто-то еще поймет.Обратите внимание, что Google Apps Script работает на JS 1.6 с некоторыми частями 1,7 и 1,8