Google Apps脚本:日历服务:在CalendarEventSeries中查找第一个事件

时间:2016-05-27 07:01:38

标签: google-apps-script

我想计算一个人的年龄,他的生日存在于我日历中的事件系列中。要做到这一点,我需要知道本系列中的第一个事件,那就是问题:如何从实际事件中获取系列的第一个事件?

由于 罗尼

2 个答案:

答案 0 :(得分:0)

您需要使用startDate参数来获取系列中第一个事件的日期(仅使用日期;忽略时间)。

var eventSeries = CalendarApp.getDefaultCalendar().createAllDayEventSeries('No Meetings',
     new Date('January 2, 2013 03:00:00 PM EST'),
     CalendarApp.newRecurrence().addWeeklyRule()
         .onlyOnWeekday(CalendarApp.Weekday.WEDNESDAY)
         .until(new Date('January 1, 2014')));
 Logger.log('Event Series ID: ' + eventSeries.getId());

您还可以使用getEventSeriesById(iCalId)获取具有给定ID的事件系列。

  

如果给出的ID是针对单个CalendarEvent的,则会返回CalendarEventSeries,其中包含系列中的单个事件。请注意,如果事件系列属于默认日历以外的日历,则必须从Calendar调用此方法;直接调用CalendarApp.getEventSeriesById(id)只会返回默认日历中存在的事件系列。

希望这有帮助!

答案 1 :(得分:0)

另一个答案实际上没有回答初始请求,CalendarApp没有方法来获取周期性事件的开始日期。 您应该使用高级Calendar API(必须手动启用,请参阅下文并按照说明操作)

enter image description here

然后使用高级API获取您想要的信息(自动完成功能也适用于这些方法,以便您可以轻松查看可用的信息)

下面的测试代码,请注意高级Calendar API的事件ID不同,您必须在' @'之后删除该部分。

function createTestEvents() {
  var recurrence = CalendarApp.newRecurrence().addWeeklyRule().times(10);
  var testEvent = CalendarApp.getDefaultCalendar().createEventSeries('test event serie', new Date('2016/05/10'), new Date(new Date('2016/05/10').getTime()+12*3600000), recurrence);
  var id = testEvent.getId();
  Logger.log('Event Series ID: ' + id);
  viewTestEvent(id)
}

function viewTestEvent(id){
  var event= CalendarApp.getDefaultCalendar().getEventSeriesById(id);
  var calId = CalendarApp.getDefaultCalendar().getId();
  Logger.log('event title = '+event.getTitle());
  var AdvanncedId = id.substring(0,id.indexOf('@'));
  Logger.log('AdvanncedId = '+AdvanncedId);
  var testEvent = Calendar.Events.get(calId, AdvanncedId);
  Logger.log('testEvent start = '+ testEvent.start);
  return testEvent;
}

function test(){ // a few examples of what you can retrieve...
  var event = viewTestEvent('59buf7nq6nr6qo79bh14kmsr6g@google.com');
  Logger.log('\n\nstart = '+event.start);
  Logger.log('\n\ncreated on = '+event.created);
  Logger.log('\n\nend on = '+event.end);
  Logger.log('\n\nrecurrence = '+event.recurrence);
}

enter image description here

enter image description here