如何编写AppleScript检测iCal今日事件并触发执行对应任务
iCal AppleScript 日程检测逻辑实现方案
完全可以通过原生AppleScript实现两类日程判断+任务触发逻辑,macOS下的Calendar(原iCal,系统更名后AppleScript调用接口保持向下兼容)原生支持事件查询能力,不需要安装第三方依赖。
核心实现逻辑
- 先生成当日0点、当日23点59分59秒两个时间节点,作为日程筛选的时间边界
- 调用Calendar的脚本接口,拉取所有时间落在当日范围内的日程事件
- 根据返回的事件列表长度做分支判断:列表非空则执行有日程的正向任务,列表为空则执行无日程的反向任务
可直接复用的基础脚本
-- 初始化当日时间范围 set todayStart to current date set time of todayStart to 0 * hours + 0 * minutes + 0 * seconds set todayEnd to todayStart + (23 * hours + 59 * minutes + 59 * seconds) -- 查询当日日程,如需筛选指定日历,把下方"*"替换为对应日历的准确名称即可 tell application "Calendar" set todayEvents to every event of calendar "*" where its start date ≥ todayStart and its start date ≤ todayEnd end tell -- 分支执行逻辑 if (count of todayEvents) > 0 then -- 正向逻辑区:检测到今日日程时要执行的任务写在此处 display notification "今日共有" & (count of todayEvents) & "个已安排日程" with title "日程检测" -- 可自行追加操作:比如启动工作类应用、打开会议软件、触发工作专注模式等 -- 示例:启动飞书:tell application "Lark" to activate else -- 反向逻辑区:未检测到今日日程时要执行的任务写在此处 display notification "今日无已安排日程" with title "日程检测" -- 可自行追加操作:比如开启免打扰、打开休闲应用、触发休息模式等 end if
自定义调整注意事项
- 跨天事件统计:如果需要把开始时间在昨日、但持续到今日的跨天事件也纳入检测范围,把查询条件修改为
where its start date ≤ todayEnd and its end date ≥ todayStart即可 - 任务扩展写法:两个逻辑分支内支持所有AppleScript合法操作:启动/退出应用、执行Shell命令、调用系统快捷指令、弹出交互弹窗都可以直接编写,执行Shell命令的写法为
do shell script "你的终端命令内容" - 自动触发配置:可以把脚本导出为.app格式应用,搭配macOS自带的「自动操作」日历触发器或者「提醒事项」的定时提醒,实现每日固定时间自动运行检测,不需要手动点击执行
内容的提问来源于stack exchange,提问作者Ben Jo
相关产品推荐
相关产品推荐

