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

如何使用GScript筛选谷歌日历系列约会,仅显示系列母事件?

问题原因

你当前的代码会返回所有系列事件实例,是因为event.isRecurringEvent()方法对母事件和系列中的每个重复实例都会返回true,所以过滤后得到的是时间范围内所有属于重复系列的事件,而不只是母事件。

解决方案

要只获取系列的母事件,需要利用CalendarEvent.getEventSeries()方法——这个方法会返回当前事件所属的系列母事件。我们可以通过收集这些母事件并去重,来避免重复输出同一个系列的母事件。

修正后的代码示例
function getRecurringMasterEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var now = new Date();
  var oneYearFromNow = new Date(now.getFullYear() + 1, now.getMonth(), now.getDate());

  var events = calendar.getEvents(now, oneYearFromNow);
  var masterEvents = new Set(); // 用Set自动去重

  events.forEach(function(event) {
    if (event.isRecurringEvent()) {
      var masterEvent = event.getEventSeries();
      masterEvents.add(masterEvent);
    }
  });

  // 遍历输出母事件标题
  masterEvents.forEach(function(master) {
    Logger.log(master.getTitle());
  });
}
关键说明
  • getEventSeries():不管是母事件还是重复实例,调用这个方法都会返回该系列的原始母事件对象。
  • Set:利用Set的特性自动去重,避免同一个系列的多个实例导致母事件被重复添加。
  • 如需获取母事件更多信息(如创建时间、重复规则),可直接调用母事件对象的方法,比如master.getRecurrence()获取重复规则。

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:52:11