如何在AppleScript Calendar中获取包含重复事件的全部事件实例?
解决重复事件stamp date获取问题
你当前的筛选逻辑仅针对事件主条目起始日期,而重复事件的主条目起始日期通常早于eventStart,导致其在目标时间段内的实例被遗漏。需要改用事件是否在目标时间段内发生的判断条件,才能覆盖所有包含重复实例的事件。
修改后的AppleScript代码如下:
set eventStart to current date set eventEnd to eventStart + (30 * days) set myCal to calendar "你的日历名称" -- 替换为实际日历名称 -- 获取目标时间段内所有非全天事件(含重复实例对应的主事件) set targetEvents to every event of calendar myCal whose allday event is false and occurs between eventStart and eventEnd set newStamps to get stamp date of targetEvents
关键说明:
occurs between eventStart and eventEnd会匹配所有在目标时间段内有实例的事件,包括重复事件的主条目(即使主条目起始日期早于eventStart)。- 重复事件的所有实例共享同一个
stamp date(即主事件的stamp date),因此提取结果会包含这些原本被遗漏的stamp date。 - 若需避免重复事件的多个实例导致stamp date重复,可添加去重逻辑:
-- 对stamp date去重 set uniqueStamps to {} repeat with aStamp in newStamps if aStamp is not in uniqueStamps then set end of uniqueStamps to aStamp end if end repeat set newStamps to uniqueStamps
内容的提问来源于stack exchange,提问作者SamZay
相关产品推荐
相关产品推荐

