我想从电子表格中更新我的日历:
我尝试了以下内容:
function caltest1() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 5);
var data = dataRange.getValues();
var calId = "TestCalendar";
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
var row = data[i];
var title = row[0]; // First column
var desc = row[1]; // Second column
var tstart = row[2];
var tstop = row[3];
var loc = row[4];
//cal.createEvent(title, new Date("March 3, 2010 08:00:00"), new Date("March 3, 2010 09:00:00"), {description:desc,location:loc});
cal.createEvent(title, tstart, tstop, {description:desc,location:loc});
}
}
但是,我收到以下错误:
TypeError: Cannot call method "createEvent" of null
使用以下电子表格:
任何建议,我做错了什么?
感谢您的回复!
答案 0 :(得分:2)
简短回答:您将日历的名称传递给getCalendarById()
,因此它正在返回null
。将“TestCalendar”更改为日历的ID或使用getCalendarsByName()
。
我将按照我阅读的方式引导您完成此操作,以便您可以看到一种方法来调试它。
此错误告诉您,cal
变量在您呼叫null
的最后一行是cal.createEvent( ... )
。这意味着您之前的语句var cal = CalendarApp.getCalendarById(calId);
正在返回null
。使用Google Calendar API搜索此功能我发现您使用的是getCalendarId()
的正确语法,但您传递的字符串参数似乎是日历的名称,而不是ID。