0

我正在尝试按照谷歌脚本日历中的示例进行操作。除了 calendarID 之外,我没有更改代码。代码与示例显示的完全相同:

function createEvent(calendarId) {
      var cal = CalendarApp.getCalendarById(calendarId);
      var title = 'Script Demo Event';
      var start = new Date("April 1, 2012 08:00:00 PDT");
      var end = new Date("April 1, 2012 10:00:00 PDT");
      var desc = 'Created using Google Apps Script';
      var loc = 'Script Center';

      var event = cal.createEvent(title, start, end, {
          description : desc,
          location : loc
      });
    };

我不确定是否需要将 calendarId 更改为我的 'xxxxx@gmail.com'。但是当我运行这些代码时,错误是TypeError: Cannot call method "createEvent" of null. (line 15, file "Code")

问题是什么 ?

4

2 回答 2

4

错误消息告诉您没有具有此 ID 的日历,非域用户的日历 ID 的通常形式类似于 h22xxxxxxxjb6ul4hu7ft8@group.calendar.google.com和域:domain.xxx_se8nmkl1qsqxxxxxxxxx28ufs@group .calendar.google.com在此处输入图像描述

您是否检查过您输入的 ID 是否有效?

您还可以使用相同的脚本测试相同的脚本getCalendarsByName('calendarName'),该脚本将在您的日历中返回具有此名称的所有日历的数组,在这种情况下,您通常必须使用getCalendarsByName('calendarName')[0].

您还可以使用默认日历getDefaultCalendar(),这是附加到您的 gmail 地址的日历。所有这些都在文档中得到了很好的说明。

这个小代码将允许您检查您拥有或订阅的所有日历的 ID。

function testCals(){
  var cals = CalendarApp.getAllCalendars();
  for(var n in cals){
    Logger.log(' calendar ID = '+cals[n].getId()+'\nName = '+cals[n].getName()+'\n')
  }
}
于 2013-10-24T20:06:34.293 回答
0

2012年的事件是google使用的默认代码作为例子

于 2014-01-24T10:09:02.447 回答