TypeError:无法调用方法" push"未定义的

时间:2017-10-03 19:00:10

标签: javascript google-apps-script

我正在尝试修改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;

1 个答案:

答案 0 :(得分:0)

正如@Pointy指出的那样,index的值未定义。实际上,您的所有变量thread, subject, body, from, date, emails, index, event最初都是未定义的,因为您要为它们分配两个值,这是我从未在任何语言参考中看到过的。
之后,您重新分配除index之外的所有内容,但[], i的初始分配在语法上是错误的 - 因此undefined

只需声明并初始化index,就像这样:var index = [];你应该没问题。 您可以初始化为null的其他变量,以明确您稍后会分配一些正确的值。