Apps Script CalendarApp createAllDayEvent 创建事件,但它只在日历中显示 "To:"

Apps Script CalendarApp createAllDayEvent creates event but it only displays "To:" in the calendar

我想根据电子表格中的数据将活动添加到我的 Google 日历中。事件的名称及其日期将来自电子表格。

这是我要处理的table:

function myFunction() {


  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarID = spreadsheet.getRange("D1").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarID);

  var dates = spreadsheet.getRange("A1:B11").getValues();
  var date = dates[0][0];
  var event = CalendarApp.getDefaultCalendar().createAllDayEvent(date,new Date('3-19-2020'));

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

  }
}

但即使我尝试在没有循环的情况下执行所有这些操作,我也会得到以下结果:

CalendarApp Class 的 createAllDayEvent(title, startDate, endDate) 方法的第一个参数是 title,它必须是字符串数据类型。 JavaScript 值可以有不同的数据类型。它们可以是 string,或 object,或 Boolean,或 number,或 date。在使用 typeof 检查数据类型时,日期被评估为一个对象。如果 date 的值是日期,那么它是 title 参数的错误数据类型。您可以使用 typeof putSomethingHere 确定数据类型所以,我会检查 date 的数据类型,并在需要时将其转换为字符串。

if (typeof date === 'object') {
  timeZone = Session.getScriptTimeZone();//Enter your timezone here
  date = Utilities.formatDate(date, timeZone, "yyyy-MM-dd");//Formats the date to a string
}

根据您发布的data tableA1B1似乎是您的headers电子表格,当您尝试创建事件时,您正在使用 dates[0][0] 参数创建 var date,该参数基本上由 headers.

表示

您可以改为更新范围,以便不包括 headers,如下所示:var dates = spreadsheet.getRange("A2:B11").getValues(); 调用 dates 变量像这样,跳过 headers: dates[1][0].

参考

我放弃了这个想法,开始了同样的 "project" 我更熟悉的 Java。