我犯了一个灾难性的错误。我使用Microsoft Flow将Google日历邀请添加到Outlook,然后将Outlook日历添加到Google。显然,这创建了一个循环的日历邀请函,现在我有成千上万个日历事件使日历无法打开。
我想批量删除所有这些事件。我创建了一个Google脚本,该脚本利用以下内容删除具有特定主题行的事件:
function delete_events() {
var fromDate = new Date(2019,8,16,15,0,0);
var toDate = new Date(2019,8,18,11,0,0);
var calendarName = 'my email address';
var toRemove = 'Heather Unavailable';
var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
var events = calendar.getEvents(fromDate, toDate,{search: toRemove});
for(var i=0; i<events.length;i++) {
var ev = events[i];//duplicate declaration
if(ev.getTitle()==toRemove) {//check if the title matches
var ev = events[i];//duplicate declaration
Logger.log(ev.getTitle()); // show event name in log
ev.deleteEvent();
}
}
}
但是,我遇到一个错误:
您在短时间内创建或删除了太多日历或日历事件。请稍后再试。 (第18行,文件“代码”)
请帮助!
答案 0 :(得分:0)
尝试一下:
function delete_events() {
var fromDate = new Date(2019,8,16,15,0,0);
var toDate = new Date(2019,8,18,11,0,0);
var calendarName = 'my email address';
var toRemove = 'Heather Unavailable';
var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
var events = calendar.getEvents(fromDate, toDate,{search: toRemove});
var ev;
for(var i=0; i<events.length;i++) {
for (var j = 0; j < 200; j++){
ev = events[i];
if(ev.getTitle()==toRemove) {//check if the title matches
Logger.log(ev.getTitle()); // show event name in log
ev.deleteEvent();
}
}
Utilities.sleep(5000);
}
}
这将在删除200个事件的批次之间等待5秒,您可以尝试删除事件的数量和等待时间。或者,您可以阅读Batch Requests以更好地管理大量请求,如果这样做,this answer提供了Drive API的示例(您需要Calendar API中的delete event method)>