我想计算一个人的年龄,他的生日存在于我日历中的事件系列中。要做到这一点,我需要知道本系列中的第一个事件,那就是问题:如何从实际事件中获取系列的第一个事件?
由于 罗尼
答案 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(必须手动启用,请参阅下文并按照说明操作)
然后使用高级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);
}