我正在尝试获得一个重复发生事件的统一实例,并对其进行更改以反映该重复事件的所有实例。calendar.getEvents
为循环序列中的每个事件返回单个实例。即如果我对该实例进行了任何更改(例如删除它),则仅删除该特定实例。我尝试使用getEventSeries()
和deleteEventSeries()
,但是它们未反映在数组中,因此每次删除时,我最终都会调用getEvents
。这是最好的方法吗?还是有其他选择?
//The object of the following code is to delete all events in a calendar
function delete_events(calendar) {
var fromDate = new Date("January 1, 1900 00:00:00");
var toDate = new Date("January 1, 2100 00:00:00");
var events = calendar.getEvents(fromDate, toDate);
while (events.length > 0) {
var ev = events[0];
var es = ev.getEventSeries();
es.deleteEventSeries();
Logger.log('Deleted: ' + es.getTitle());
events = calendar.getEvents(fromDate, toDate);
}
}
最佳答案
由于eventsSeries具有相同的ID,因此您可以通过简单地记住这些ID并在随后的迭代中跳过这些事件来简化此过程。
这是一个简单的测试代码:
function test(){
var cal = CalendarApp.getCalendarsByName('some calendar name you own')[0];
delete_events(cal);
}
function delete_events(cal) {
var fromDate = new Date("January 1, 2014 00:00:00");
var toDate = new Date("January 1, 2100 00:00:00");
var events = cal.getEvents(fromDate, toDate);
var IDs = [];
for(var n in events){
Logger.log(events[n].getTitle());
var id = events[n].getId();
if(IDs.indexOf(id)>-1){continue};
try{
cal.getEventSeriesById(id).deleteEventSeries();
IDs.push(id);
Logger.log(events[n].getTitle()+' was deleted, ID = '+events[n].getId());
}catch(err){Logger.log(events[n].getTitle()+' on '+Utilities.formatDate(events[n].getStartTime(),cal.getTimeZone(),'yyyy/MMM/dd')+" was not deleted,you don't have the right to modify it");}
}
}
关于javascript - 获取重复事件和非重复事件的单个统一实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26081968/