Google Apps 脚本:连接日期和时间

Google Apps Script: Concatenating date and time

[更新]:要使用 AppsScript 创建 google 日历事件,我们可以使用 createEvent(eventName, startTime, endTime) 的简单方法。我已经处理过这个并且没有任何问题。但我使用的唯一日期格式是 google 工作表中的长 date/time 格式(例如 3/9/2021 13:30:00)。

使用下面的代码,我想将日期和时间列合并到一个 Date 对象中以输入到 createEvent() 方法中,但出现 Invalid Date.

的错误

function calendarSyncNew() {
  var dataSheet = mySheet;
  var calendarId = calendarId;
  var eventCal = CalendarApp.getCalendarById(calendarId);
  var eventArray = dataSheet.getRange('A2:E').getValues();

  for (x = 0; x < eventArray.length; x++) {

    var event = eventArray[x];
    var eventName = event[3];
    var eventDate = event[0];
    var timeZone = event[4];
    var startTime = new Date(`${eventDate} ${event[1]} ${timeZone}`); 
    var endTime = new Date(`${eventDate} ${event[2]} ${timeZone}`);
    eventCal.createEvent(eventName, startTime, endTime);
    Logger.log(`startTime is: ${startTime}`);
    Logger.log(`endTime is: ${endTime}`);
  }
    
}
    

我认为这个问题与您之前的问题有关?如果是这样,请查看我使用的示例数据和下面的脚本:

示例数据:

脚本:

  // use getDisplayValues for getting the string equivalent of the data instead
  // filter out rows without values in column A
  var eventArray = dataSheet.getRange('A2:I')
                            .getDisplayValues()
                            .filter(x => x[0] != '');

  eventArray.forEach(event => {
    var eventName = event[4];
    var startTime = new Date(`${event[0]} ${event[1]} ${event[3]}`);
    var endTime = new Date(`${event[0]} ${event[2]} ${event[3]}`);
    eventCal.createEvent(eventName, startTime, endTime);
  });

输出:

输出已根据我的时区进行了调整,因此它没有正确反映示例数据中的日期,但它已签出。