我正在尝试修改google-apps-script以在Google日历中创建一个事件,以跟进包含特定标签的电子邮件。它的那一面我会照顾。我遇到的问题是得到TypeError:无法调用方法" push"尝试运行脚本时未定义。我没有看到这里的错误所以任何帮助将不胜感激。
function ReadEmails() {
var thread, subject, body, from,
date, emails, index, event = [], i;
var mySheet = SpreadsheetApp.getActiveSpreadsheet();
var LABEL = mySheet.getRange("D5").getValue();
var TOTAL = mySheet.getRange("D7").getValue();
emails = GmailApp.search("label:" + LABEL);
var count = emails.length;
if (count == 0)
return;
if (count > TOTAL)
index = getIndex(TOTAL, 0, count);
else {
for (i=0; i<count; i++)
index.push(i);
}
for (i=0; i<TOTAL; i++) {
var n = index[i];
if (emails[n]) {
thread = emails[n].getMessages()[0];
subject = thread.getSubject();
body = processHTML(thread.getBody(), 250);
link = thread.getId();
from = thread.getFrom();
date = Utilities.formatDate(thread.getDate(),
Session.getTimeZone(), "MMM dd, yyyy");
event = 'Follow up with' + from + 'on'+ subject + ', Next Friday
at 1PM';
CalendarApp.getDefaultCalendar().createEventFromDescription(event);
Logger.log('Event ID: ' + event.getId());
}
}
}
function getIndex(count, min, max) {
var results = [], index;
while ( count > 0) {
randNumber = Math.round(min + Math.random() * (max - min));
if (results.indexOf(randNumber) == -1) {
results.push(randNumber);
count--;
}
}
return results;
答案 0 :(得分:0)
正如@Pointy指出的那样,index
的值未定义。实际上,您的所有变量thread, subject, body, from, date, emails, index, event
最初都是未定义的,因为您要为它们分配两个值,这是我从未在任何语言参考中看到过的。
之后,您重新分配除index
之外的所有内容,但[], i
的初始分配在语法上是错误的 - 因此undefined
。
只需声明并初始化index
,就像这样:var index = [];
你应该没问题。
您可以初始化为null
的其他变量,以明确您稍后会分配一些正确的值。