如何以编程方式获取日历的ID?

时间:2015-10-16 18:31:35

标签: javascript google-apps-script google-calendar-api

我正在尝试创建一个具有特定名称和摘要的日历,并获取Google以编程方式分配给它的ID。

我知道如何手动完成,我只是希望有一种方法来创建日历,然后发布通过id引用它的事件。

使用下面的脚本,如CalendarApp文档中所示,提供了许多包含文本' US Holidays'。

的日历。
// Gets the public calendar named "US Holidays".
 var calendars = CalendarApp.getCalendarsByName('US Holidays');
 Logger.log('Found %s matching calendars.', calendars.length);

我已经取代:

Logger.log('Found %s matching calendars.', calendars.length);

使用:

Logger.log('Found %s matching calendars.', calendars.getId());

但我明白了:

  

TypeError:在对象Calendar中找不到函数getId。 (第22行,   文件"")

1 个答案:

答案 0 :(得分:3)

请记住getCalendarsByName()返回一个数组;这就是calendars具有length属性的原因。 getId()方法适用于个人日历对象,例如日历[0] .getId()。

提示:当您在Google Apps脚本编辑器中编写代码时,请注意并利用 auto-completion feature。例如,从您显示的示例开始,将光标放在第二行calendars后面的点之前。如果现在按,自动完成将弹出一个属性和方法列表,这些属性和方法适用于.之前的对象。请参阅下面的视频:由于calendars没有getId()方法,因此是列表中的某个项目,这是一个很好的线索。 (这些都是数组方法和属性。)

enter image description here

实施例

function myFunction() {
  // Gets the public calendar named "US Holidays".
  var calendars = CalendarApp.getCalendarsByName('US Holidays');
  Logger.log('Found %s matching calendars.', calendars.length.toString() );

  for (var i=0; i<calendars.length; i++) {
    Logger.log('calendar[%s] id: %s.', i.toString(), calendars[i].getId() );
  }
}

日志:

[15-10-16 14:46:58:664 EDT] Found 1 matching calendars.
[15-10-16 14:46:58:666 EDT] calendar[0] id: en.canadian#holiday@group.v.calendar.google.com.

(您可能会注意到我没有实际使用美国假期日历进行测试!)