applescript 是 macos 原生脚本语言,可高效自动化日历与提醒事项任务;支持创建带属性事件、跨条件筛选、清单管理及多种触发方式,需开启辅助功能权限。
applescript 是 macos 原生支持的脚本语言,处理日历与待办事项(即「提醒事项」app)自动化时,语法直观、集成度高,适合快速实现日常调度任务。它不依赖第三方运行时,也不需要额外授权(首次运行会弹出系统权限提示),但需确保「日历」和「提醒事项」app 已开启辅助功能权限。
创建带完整属性的日历事件
AppleScript 可精确控制事件标题、时间、地点、备注、URL 和提醒方式。关键点在于:先检查目标日历是否存在,再创建事件;提醒用 display alert 类型(弹窗)或 mail alert(邮件),触发间隔以分钟为单位(负数表示提前)。
- 用
if not (exists calendar "项目日程") then ... make new calendar避免因日历缺失导致脚本中断 -
startdate和enddate必须是 AppleScript 的date类型,可用(current date) + 3600(加1小时秒数)或(current date) + (30 * minutes)等方式构造 - 添加多个提醒?只需重复
make new display alert at newEvent with properties {...}即可,例如分别设 -15 分钟和 -5 分钟
读取与筛选已有日历事件
脚本不仅能写,也能查。通过 tell calendar "工作" 进入指定日历上下文后,可用 whose 子句做条件过滤,比如查找今天开始的所有会议,或标题含“评审”的事件。
- 常用筛选条件:
summary contains "同步"、startdate ≥ (current date)、allday event is false - 结果是事件列表,可遍历获取
summary、location、description等字段,用于生成日报或发送通知 - 注意:跨日历查询需逐个
tell,无法一次性搜索全部日历
管理提醒事项(To-Do)清单
提醒事项与日历共享底层框架,但 AppleScript 中需切换到「提醒事项」App,并指定清单(List)而非日历。每个清单对应一个独立的待办集合,如“购物”“待跟进”“读书计划”。
- 创建新提醒:
tell list "待跟进" of application "提醒事项" to make new reminder with properties {name:"回电客户", due date:(current date) + (2 * hours)} - 标记完成:
set completed of reminder "整理会议纪要" to true - 子任务支持:先
make new reminder,再对其调用make new reminder at beginning of subtasks
触发方式与实用组合
脚本写完只是第一步,真正提升效率的是让它在合适时机自动运行。AppleScript 支持多种低门槛触发路径:
- 保存为 .scpt 文件后,双击直接执行(适合手动触发场景)
- 用终端命令
osascript /path/to/script.scpt,便于集成进 shell 脚本或 launchd 定时任务 - 拖入「快捷指令」中作为“运行脚本”操作,再绑定 NFC 标签、Siri 语音或桌面小组件
- 在「自动操作」工作流里嵌入“运行 AppleScript”,前接“文件夹操作”或“定时启动”,后接“通知”或“邮件”完成闭环











