是否可以通过id获取单个事件(而不仅仅是带有getEventSeriesById()的eventSeries? 我想更新单个事件的开始和结束日期,并且需要类似“getEventById”(事实上不存在) - 否则我必须在事件系列中设置重复:
var oldEvent = CalendarApp.getCalendarById('...').getEventSeriesById('...');
var recur = CalendarApp.newRecurrence().addDailyRule().times(1);
oldEvent.setRecurrence(recur, new Date(2015,0,2), new Date(2015,0,3));
我不希望在我的日历中有重复的事件,即使它们只出现一次。还有其他选择吗?
答案 0 :(得分:0)
是否可以通过id获取单个事件(而不仅仅是带有getEventSeriesById()的eventSeries?
是的,Advanced Calendar Service。 (结果将是Events Resource,而不是GAS CalendarEvent,因此您将以不同方式处理它。)
var event = Calendar.Events.get(calendarId, eventId); // Note, your default calendarId is 'primary'
您可以将事件资源与update semantics一起使用来更改事件的时间:
function updateEventDateTime( calendarId, eventId, startDateTime, stopDateTime ) {
// For update semantics, we need a complete event. Start by getting the event.
var event = Calendar.Events.get(calendarId, eventId);
// Change the event time
event.start.dateTime = startDateTime.toISOString();
event.stop.dateTime = stopDateTime.toISOString();
// And update the event
Calendar.Events.update(event, calendarId, eventId);
}
但是,您根本不需要getEventById()
方法。通过使用patch semantics,您可以立即跳转到设置时间,而无需执行get
。这将更有效:
function updateEventDateTime( calendarId, eventId, startDateTime, stopDateTime ) {
// For patch semantics, we only need to provide properties that are changing. Start with empty object.
var event = {};
// Change the event time
event.start.dateTime = startDateTime.toISOString();
event.stop.dateTime = stopDateTime.toISOString();
// And update the event
Calendar.Events.patch(event, calendarId, eventId);
}
如果您真的关心采用getEventById()
方法,请访问并加注明星Issue 4614。