Google Apps Script合并两个日历事件及按日期排序求助
合并并排序Google日历事件的正确实现
你之前尝试的数组合并方法都不符合JavaScript数组操作规范,正确的做法是用数组concat()方法合并两个日历的事件数组,再通过sort()方法按事件开始时间排序。
完整实现代码
// 获取两个目标日历实例 var cal = CalendarApp.getCalendarById(mycal); var cal2 = CalendarApp.getCalendarById(bCal); // 分别获取两个日历的事件集合 var temp = cal.getEvents(new Date(StartDate), new Date(EndDate)); var temp2 = cal2.getEvents(new Date(StartDate), new Date(EndDate)); // 合并两个事件数组 var events = temp.concat(temp2); // 按事件开始时间升序排序 events.sort(function(a, b) { return a.getStartTime().getTime() - b.getStartTime().getTime(); }); // 提取事件详情(复用你原有的逻辑) var details = []; for (var i = 0; i < events.length; i++) { details.push([ events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), events[i].getDateCreated(), events[i].getLastUpdated() ]); }
关键说明
- 数组合并:
concat()是JavaScript合并数组的标准方法,会返回包含两个数组所有元素的新数组,不会修改原有的事件数组。 - 排序逻辑:通过
getStartTime().getTime()将日期转换为时间戳(数字格式),用减法实现升序排序;如果需要降序,只需调换a和b的位置即可。 - 兼容性:合并排序后的数组结构和单个日历的事件数组完全一致,可直接复用你原有的事件详情提取逻辑。
内容的提问来源于stack exchange,提问作者Sean Smith
相关产品推荐
相关产品推荐

