You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:50:31