Google apps script Google应用程序脚本:日历服务:查找CalendarEventSeries中的第一个事件

Google apps script Google应用程序脚本:日历服务:查找CalendarEventSeries中的第一个事件,google-apps-script,Google Apps Script,我想计算一个人的年龄,他的生日在我的日历中作为事件系列存在。要做到这一点,我需要知道本系列中的第一个事件,这就是问题:如何从实际事件中获取系列中的第一个事件 谢谢 Ronny您需要使用参数来获取序列中第一个事件的日期(只使用日期;忽略时间) 您还可以使用获取具有给定ID的事件系列 如果给定的ID是针对单个事件的,则将返回一个,其中包含系列中的单个事件。请注意,如果事件系列属于默认日历以外的日历,则必须从该日历调用此方法;直接调用CalendarApp.getEventSeriesById(id)

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

谢谢 Ronny

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

您还可以使用获取具有给定ID的事件系列

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


希望这有帮助

另一个答案实际上没有回答初始请求,CalendarApp没有方法获取重复事件的开始日期。 您应该使用高级日历API(必须手动启用,请参见下文并遵循说明)

然后使用高级API获取所需信息(自动完成功能也适用于这些方法,因此您可以轻松查看可用的内容)

在下面的测试代码中,请注意高级日历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);
}

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);
}