AppleScript本质是向Mac下达自然语言指令,核心为tell语句指定操作对象,配合if/else、try/on error、repeat等结构实现判断与循环,支持do shell script调用Unix命令,并需通过脚本编辑器、osascript、导出App或Automator等方式执行。

AppleScript 不是写代码,而是“对 Mac 下指令”。它用接近英语的句式控制应用、操作文件、触发系统行为,核心在于理解“谁做什么”和“怎么安全地做”。掌握几个关键语法结构和执行路径,就能覆盖日常 80% 的自动化需求。
tell 语句:所有操作的起点
AppleScript 的灵魂是 tell —— 它指定动作对象(比如 Finder、Safari 或当前打开的 PowerPoint),后续命令自动作用于该上下文。嵌套 tell 可形成自然的层级逻辑。
- 单层: tell application "Finder" to make new folder at desktop with properties {name:"Backup"}
- 嵌套: tell application "Finder"
tell folder "Documents" of home
delete every file whose name ends with ".tmp"
end tell
end tell - 注意:每个 tell 必须有对应的 end tell;对象名要用英文双引号包裹,大小写敏感
数据与条件:让脚本能判断、能响应
脚本不能只靠“执行”,还要处理异常、区分情况、保存中间结果。AppleScript 提供了基础但够用的结构支持。
在 macOS 上发现并控制 Apple 媒体/AirPlay 设备(HomePod、Apple TV、AirPlay 扬声器)。适用于扫描 AirPlay 设备、映射名称到 IP/ID、配对连接,以及利用 pyatv 和 Airfoil 控制播放与音量。
- if/else 判断:比如检查某个文件是否存在再决定是否备份
- try/on error 捕获错误:避免因找不到备注或权限不足导致整个脚本崩溃
- repeat 循环:批量处理多张幻灯片、遍历桌面所有 PDF 文件
- 变量直接用 set 声明,无需类型声明;文本拼接用 &,数字计算用 + - * /
跨层能力:AppleScript + Shell = 全能组合
AppleScript 擅长操控图形界面和应用逻辑,但底层文件管理、权限修改、日志清理等任务,交给 Unix 命令更直接高效。用 do shell script 就能无缝调用。
- 例如清空特定缓存:do shell script "rm -rf " & quoted form of (POSIX path of (path to library folder from user domain as text) & "Caches/Temp")
- 注意:Shell 命令字符串必须用双引号包裹;路径需转为 POSIX 格式,并用 quoted form of 防止空格或特殊字符出错
- 可配合 with administrator privileges 请求权限(首次运行会弹窗确认)
执行方式:选对入口,脚本才真正可用
写完脚本只是第一步,让它在合适场景下被调用,才算完成自动化闭环。
- 脚本编辑器:适合开发调试,支持编译检查、断点、词典查阅
- osascript 命令:终端里一行搞定,适合定时任务(配合 launchd)或与其他 Shell 脚本串联
- 导出为 App:双击运行、拖进 Dock、设快捷键,适合高频手动触发的任务
- 嵌入 Automator:把 AppleScript 当作工作流中的一环,接收上一步输入、传给下一步输出
- 启用脚本菜单:菜单栏常驻图标,一键访问常用脚本,不占 Dock 也不开窗口
不复杂但容易忽略:每次调用外部应用前加 activate 确保它就绪;涉及隐私权限(如屏幕录制、可读写文件夹)需在“系统设置 > 隐私与安全性”中手动授权;PowerPoint、Word 等 Microsoft 应用的脚本支持度取决于版本,建议优先使用最新版。


















