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

AppleScript无需虚拟提醒单行完成无截止日/逾期提醒标记方法

AppleScript 批量标记提醒事项无虚拟提醒实现方案

需求说明

编写AppleScript脚本,将指定提醒列表内满足以下所有条件的提醒标记为已完成:

  • 状态为未完成
  • 名称与指定文本完全匹配
  • 满足「未设置截止日期」或「截止日期早于今日(已逾期)」其一
  • 要求使用单行筛选语句实现,避免全量遍历的低效率问题(数据量大时单行筛选效率比遍历高数个量级)

初始实现报错信息

初始尝试直接在筛选条件中判断due date is missing value,代码如下:

set curDate to current date
tell application "Reminders"
    set myList to "Reminders"
    set myTitle to "Test 1"
    set completed of every reminder in list myList whose completed is false and name is myTitle and (due date is missing value or due date is less than curDate) to true
end tell

运行抛出类型转换错误:

error "Reminders got an error: Can’t make missing value into type date." number -1700 from missing value to date

错误触发位置为筛选条件所在行。

冗余临时方案验证

测试发现,提前创建一个无截止日期的虚拟提醒,用该虚拟提醒的due date属性作为空值判断的对比值,代码可正常运行:

set curDate to current date
tell application "Reminders"
    set myList to "Reminders"
    set myTitle to "Test 1"
    -- 创建无截止日期的虚拟提醒
    set newremin to make new reminder
    set name of newremin to "Debugging delete me"
    set completed of every reminder in list myList whose completed is false and name is myTitle and (due date is (due date of newremin) or due date is less than curDate) to true
end tell

测试场景下创建2个名为"Test 1"的提醒:1个今日到期、1个未设置截止日期,上述代码可成功将两个提醒标记为已完成,运行效率符合要求,但会产生需要额外清理的冗余虚拟提醒。

最终无冗余实现

无需创建虚拟提醒,将空值判断逻辑从due date is missing value替换为not (due date exists)即可,修正后完整代码:

set curDate to current date
tell application "Reminders"
    set myList to "Reminders"
    set myTitle to "Test 1"
    set completed of every reminder in list myList whose completed is false and name is myTitle and (not (due date exists) or due date < curDate) to true
end tell

报错原因

whose子句做条件判断时会提前校验比较两侧的值类型,due date为日期类型,直接和missing value比较时,系统会尝试将missing value转换为日期类型,因此触发-1700类型转换错误。使用属性存在性判断not (due date exists)不会触发类型转换校验,可正确识别未设置截止日期的提醒,同时保留单行筛选的高性能优势,无冗余数据产生。


内容的提问来源于stack exchange,提问作者hepcat72

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:45:37