如何通过批量请求优化Google Calendar指定日期区间事件删除
如何通过单批量请求删除Google Calendar指定日期区间的事件?
你可以借助Google Calendar API的批量请求功能实现这一需求,和之前批量添加事件的思路一致,将多个删除操作打包为单个请求发送,大幅提升处理效率,替代原有的循环删除逻辑。
优化后的批量删除脚本
function batchDeleteEvents() { const today = new Date(); // 定义日期区间:过去14天到明年今日 const startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 14); const endDate = new Date(today.getFullYear() + 1, today.getDate()); const calendarId = 'xxxxxxxxxx'; // 替换为你的日历ID // 获取指定区间内的所有事件并提取核心ID(去掉@google.com后缀) const calendar = CalendarApp.getCalendarById(calendarId); const existingEvents = calendar.getEvents(startDate, endDate); const eventIds = existingEvents.map(event => event.getId().split('@')[0]); if (eventIds.length === 0) { console.log("未找到需要删除的事件"); return; } // 构建批量删除请求数组 const requests = eventIds.map(id => ({ method: 'DELETE', endpoint: `https://www.googleapis.com/calendar/v3/calendars/${calendarId}/events/${id}` })); // 发送批量请求(使用你之前用到的Tanaike批量处理库) const batchResult = BatchRequest.EDo({ batchPath: 'batch/calendar/v3', requests: requests }); console.log(`批量删除完成,共处理 ${eventIds.length} 个事件`); console.log(batchResult); }
关键说明
- 依赖准备:确保你已经安装了之前使用的Tanaike批量处理库,并且在Apps Script编辑器中启用了Google Calendar API(路径:资源 > 高级Google服务 > 开启Calendar API)。
- 事件ID处理:通过
CalendarApp获取的事件ID格式为eventId@google.com,需要提取@前的核心ID才能用于API删除请求。 - 批量限制:Google API单次批量请求最多支持1000个操作,若需删除的事件超过1000个,可将
eventIds数组拆分后分批次发送请求。 - 效率对比:原脚本每个事件删除都要发起一次独立API调用,批量请求将所有操作打包为一个HTTP请求,能显著减少网络开销,提升处理速度。
内容的提问来源于stack exchange,提问作者Codedabbler
相关产品推荐
相关产品推荐

