applescript 是 macos 原生自动化语言,支持跨应用协作与系统控制;通过脚本编辑器拖入应用验证词典支持,用 tell 块串联操作,配合 system events 补足 gui 控制,并可通过 automator、终端、导出应用等方式执行。

AppleScript 是 macOS 原生支持的自动化语言,专为跨应用协作与系统控制而设计。它不依赖第三方工具,只要目标应用开放 AppleScript 词典(sdef),就能稳定调用其功能——比如从 Safari 抓取网页标题、让 Finder 创建文件夹、向 Mail 发送草稿、或在 Terminal 中批量开标签执行命令。
确认应用是否支持脚本控制
不是所有 App 都能被 AppleScript 控制。最直接的验证方式是:打开“访达”,进入 /应用程序/实用工具,找到“脚本编辑器”;再另开一个访达窗口,把目标应用(如 Safari、Mail、终端、Numbers)图标直接拖到“脚本编辑器”图标上。若弹出词典窗口,说明该应用已提供完整接口,可查可用命令、对象和参数。
- 常见可靠组合:Finder、Safari、Mail、Pages、Numbers、终端、自动操作、系统事件(System Events)
- 第三方软件需单独测试,Chrome、Slack 等通常需配合 System Events 实现 GUI 层操作
- 首次使用 System Events 时,需在 系统设置 → 隐私与安全性 → 辅助功能 中授权脚本编辑器
用 tell 块串联多个应用
AppleScript 的核心语法是 tell,每个块只对指定应用生效,块之间可传递变量(如文本、路径、文件引用)。这是实现“输入→处理→输出”闭环的关键。
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 例如:从 Safari 获取当前页标题,保存为文本,再用 TextEdit 打开编辑
- 注意路径拼接要规范,推荐用
(path to desktop as text) & "filename.txt"而非硬编码 - 可在不同 tell 块之间插入
do shell script调用 UNIX 工具,比如用whoami获取用户名,或用date "+%Y-%m-%d"生成时间戳
用 System Events 补足 GUI 操作
当目标应用未提供 AppleScript 接口,或需点击菜单、输入文字、切换窗口时,System Events 是通用桥梁。它通过 macOS 可访问性架构识别界面元素,模拟真实用户操作。
- 例如:在 Chrome 中触发“导出为 PDF…”菜单项,只需定位进程名与菜单路径
- 精准操作依赖 UI 元素层级,可用 Xcode 自带的 Accessibility Inspector 工具辅助定位
- 常见操作包括:点击按钮、填入文本框、勾选复选框、获取静态文本值、等待窗口出现
落地执行的几种方式
写完脚本后,有多种方式让它真正跑起来,适配不同使用场景:
- 在 Automator 中嵌入:新建“快速操作”,拖入“运行 AppleScript”,粘贴代码即可绑定到服务菜单或触控栏
-
终端命令行执行:用
osascript ~/path/to/script.scpt直接运行;也可内联单行命令,如osascript -e 'tell app "Finder" to close every window' - 导出为独立应用:在脚本编辑器中选择“文件 → 导出”,格式选“应用程序”,双击即可运行,适合给非技术人员使用
- 集成到快捷指令或定时任务:配合 launchd 或 cron,实现每日整理桌面、定时备份等无人值守任务










