通过Google Apps脚本将事件添加到日历-在开始后超过一小时计算结束时间时出错

时间:2019-03-05 10:00:01

标签: javascript google-apps-script google-sheets

我有一个简单的应用程序,用户可以在其中完成Google工作表中会议的一些基本细节,然后将其导出到他们的Google日历中。脚本如下:

function exportEvents() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var headerRows = 1;  
  var range = sheet.getDataRange();
  var data = range.getValues();
  // var calId = sheet.getRange("H2:H2").getValue();
  var calId = "xxxxxxxxxxxx";
  var cal = CalendarApp.getCalendarById(calId);

  for (i=0; i<data.length; i++) {
    if (i < headerRows) continue; 
    var row = data[i];
    var date = new Date(row[1]); 
    var title = row[2];          
    var initial = row[0];
    var concatTitle = initial + " - " + title;
    var tstart = new Date(row[3]);
    tstart.setDate(date.getDate());
    tstart.setMonth(date.getMonth());
    tstart.setYear(date.getYear());
    // var tstop = new Date(row[4]);
    var tstop = new Date(tstart + row[4]);
    tstop.setDate(date.getDate());
    tstop.setMonth(date.getMonth());
    tstop.setYear(date.getYear());
    var loc = row[5];
    var desc = row[6];
    var id = row[7];              
    try {
      var event = cal.getEventSeriesById(id);
    }
    catch (e) {
      // do nothing - we just want to avoid the exception when event doesn't exist
    }
    if (!event) {
      var newEvent = cal.createEvent(concatTitle, tstart, tstop, {description:desc,location:loc}).getId();
      row[7] = newEvent;  
    }
    else {
      event.setTitle(concatTitle);
      event.setDescription(desc);
      event.setLocation(loc);
      var recurrence = CalendarApp.newRecurrence().addDailyRule().times(1);
      event.setRecurrence(recurrence, tstart, tstop);
    }
    debugger;
  }
  range.setValues(data);
}

除了用户在第4列中的会议长度超过60分钟之外,整个过程都很好,任何长达59分钟的事情都很好,并且以正确的开始和结束时间记录了事件。但是,当我输入60分钟或更长时间时,错误显示为“事件开始时间必须早于事件结束时间。”

我确定我做的事情非常简单非常错误,但是任何帮助将不胜感激。

0 个答案:

没有答案