Apple Script学习记录

Table of Contents

Apple Script 初探

一、Apple Script 究竟是什么?

在 Mac 的世界里,藏着一个鲜为人知却超级强大的 “秘密武器”——Apple Script。简单来说,它是苹果公司专为 Mac OS 系统打造的一种脚本语言,诞生于 1993 年,旨在让用户能像给助手下达指令一样,轻松指挥电脑完成各种复杂任务。

想象一下,你每天上班打开电脑,都要手动打开多个办公软件、调整窗口布局、设置工作文件夹…… 繁琐又费时。而有了 Apple Script,只需运行一个预先写好的脚本,瞬间就能自动完成这一系列操作,如同拥有了一个专属智能秘书,是不是超酷?它就像是 Mac 系统的 “幕后指挥官”,虽不常露面,却掌控全局,能深度操控各类应用程序,无论是自动备份重要文件、批量处理图片,还是一键整理杂乱无章的桌面,只要你能想到的日常重复任务,它几乎都能代劳,帮你从机械操作中解脱,留出更多精力专注于创意与决策,开启高效的 Mac 使用新体验。

二、Apple Script 初体验

![[Pasted image 20241227220331.png]]

我们先编写一个简单的 Apple Script 吧。

首先,找到 Mac 系统里的 “脚本编辑器”,它一般藏在 “实用工具” 文件夹中,要是找不到,用聚焦搜索输入 “脚本编辑器” 就能立马现身。打开它,一个简洁的编辑界面就展现在眼前,准备迎接你的指令。

现在,在编辑区敲入这段代码:

display dialog "你好呀,Mac世界!"

点击菜单栏的 “运行” 按钮,或者按下快捷键 Command + R,瞬间,一个温馨的对话框弹出,向你打招呼。就这么简单,你的第一个 Apple Script 脚本大功告成!

三、语法速览:简单易懂的规则

![[9f290142250d4483142519451dd4b567_MD5.png]]

别被 “语法” 俩字吓着,Apple Script 的语法就像日常说英语,轻松自然。

比如说,你想让 Finder(Mac 的文件管理器)帮你干点活儿,语法是这样:

tell application "Finder"

-- 在这里写下你想让Finder做的事,比如整理桌面文件、查找特定文档等

end tell

这就好比你面对面跟 Finder 沟通:“嘿,Finder,帮我个忙!” 是不是超直白?

再讲讲数据类型,常用的有数字(number)、文本(string)、列表(list)、记录(record)。定义变量很简单,像给朋友起外号一样自然:

set age to 25 -- 定义了一个叫age的变量,值是25,数字类型

set name to "小明" -- 定义文本类型变量name

set hobbies to {"阅读", "跑步", "绘画"} -- 列表类型,装着一堆兴趣爱好

set person to {name:"小红", age:30, hobbies:{"唱歌", "跳舞"}} -- 记录类型,详细描述一个人信息

条件语句,也就是做决定的 “大脑”。要是周末,就睡懒觉;工作日,就得乖乖早起上班:

if (current day is Saturday or current day is Sunday) then

display dialog "睡懒觉咯!"

else

display dialog "起床搬砖啦!"

end if

循环语句,遇到重复任务就靠它。比如你要打印 1 到 10 的数字:

repeat with i from 1 to 10

display dialog i as string

end repeat

函数呢,就像是把常用的一套动作打包,随时取用。比如写个打招呼函数:

on sayHello(name)

display dialog "你好呀," & name

end sayHello

sayHello("小美")

只要一调用 sayHello(“小美”),小美就能收到暖心问候,是不是超贴心?掌握这些基础语法,你就能搭建起属于自己的自动化流程框架,开启高效的 Mac 生活。

四、实战场景:解锁高效操作

理论懂了,来点实战过过瘾,看看 Apple Script 在不同场景如何大显身手。

自动化办公:每天上班,自动打开 “邮件”“日历”“文档” 等软件,还能一键获取最新工作安排,进入高效状态。代码如下:

tell application "Mail" to activate

tell application "Calendar" to activate

tell application "Microsoft Word" to activate

tell application "Calendar"

set theDate to current date

set theEvents to (every event whose start date is greater than or equal to theDate)

display dialog "今日工作安排:" & (get summary of theEvents)

end tell

系统管理:定期清理 “下载” 文件夹,删除 30 天前的旧文件,释放磁盘空间。

set downloadFolder to path to downloads folder

tell application "Finder"

set oldFiles to (every file of downloadFolder whose modification date is less than (current date) - 30 * days)

repeat with aFile in oldFiles

delete aFile

end repeat

end tell

与其他应用协同:配合 Adobe Photoshop,批量调整图片尺寸。假设你要把一批图片宽度设为 800 像素,高度按比例缩放:

tell application "Adobe Photoshop CC 2023"

set myFiles to choose file with multiple selections allowed

repeat with aFile in myFiles

open aFile

tell current document

resize image width 800 height (800 / (width / height)) resolution 72 resample method bicubic

save

close

end tell

end repeat

end tell

这些实战案例只是冰山一角,你可以根据日常需求,灵活搭配 Apple Script 指令,打造专属自动化流程,彻底告别繁琐操作。

Apple Script 深潜

一、Apple Script 为什么出现/是为了解决什么问题

![[fd8bbf5389eace879f385b165c1ecfde_MD5.png]]

回溯到上世纪 90 年代初,电脑开始走进更多人的工作与生活,但操作的繁琐程度却成了 “甜蜜的负担”。那时候,人们每天要在 Mac 上重复诸如打开多个软件、整理文件、频繁切换窗口等机械任务,耗时又耗力。苹果公司洞察到这一痛点,决心打造一款能让普通用户轻松驾驭的自动化工具,Apple Script 应运而生。

它的诞生,就像是给忙碌的上班族配备了一位贴心助手。比如设计师,每天要打开 Photoshop、Illustrator 等一堆设计软件,手动切换工作区、导入素材,繁琐操作常让灵感 “打折”。有了 Apple Script,一键就能让软件各就各位,素材整齐就位,设计师可全身心投入创作。再看职场打工人,上班先打开邮件、日历、文档软件,查看日程、梳理邮件、准备文档,忙碌中还易出错。Apple Script 自动串联这些流程,让打工人有条不紊开启高效一天。总之,Apple Script 旨在把人们从重复操作中解放,让大家把精力放在更具价值、更有创造性的工作上,开启轻松愉悦的 Mac 使用体验。

二、Apple Script 是怎样满足这个需求/解决这个问题的

Apple Script 之所以能成为高效利器,关键在于其独特的运行原理与精妙设计架构。

Apple Script 运行原理

Apple Script 依托于苹果的 Open Scripting Architecture (OSA) 架构,起到桥梁的作用,连接用户指令与应用程序之间的沟通渠道。OSA 是一个允许不同应用程序之间进行自动化交互的框架,而 Apple Script 是基于此框架的脚本语言。

当运行 Apple Script 时,它通过发送 Apple Event(苹果事件) 来“指挥” 应用程序执行特定任务。例如,如果你发出 “打开文档并打印” 的指令,Apple Script 会依次执行以下步骤:

  1. 发送“打开”事件:Apple Script 向文字处理应用程序发送一个“打开”事件,指示应用程序加载指定的文档。
  2. 等待文档就绪:在文档完全打开并准备好之后,Apple Script 再继续下一步。
  3. 发送“打印”事件:Apple Script 向应用程序发送一个“打印”事件,指示应用程序按照设定的参数打印文档。

通过这种方式,Apple Script 能够精准高效地控制应用程序,实现自动化操作,大大提高工作效率。

核心概念

  • Apple Event:这是 Apple Script 与应用程序通信的基本单位,代表了用户或脚本发出的指令。
  • Open Scripting Architecture (OSA):苹果操作系统中用于支持脚本语言和自动化任务的基础架构。
  • Automation:通过编写脚本实现一系列重复性或复杂任务的自动化执行,减少人工操作。

在设计架构上,Apple Script 采用面向对象模式,把应用、文件、窗口等都视为对象,每个对象有专属属性与方法。像 Finder 对象,有 “文件”“文件夹” 等属性,还有 “查找”“复制”“删除” 等方法。你想整理桌面,Apple Script 定位到 Finder 对象,调用相关方法,按规则对文件归类整理,有条不紊。而且,它是动态类型语言,变量无需提前声明类型,赋值时自动适配,编写脚本更灵活自由,降低编程门槛,让普通用户也能轻松驾驭,深度定制 Mac 使用体验,真正成为电脑的 “主人”。

三、Apple Script 的优点是什么

在脚本语言的 “江湖” 里,Apple Script 有自己的独门绝技,相较 Python、JavaScript 等常见脚本语言,优势尽显。

与 Python 比,Apple Script 和 Mac OS 系统堪称 “亲如一家”。它能直接 “对话” 各类 Mac 应用,像操控 Finder 管理文件、指挥邮件客户端收发邮件,无缝又自然。而 Python 要实现类似功能,需借助额外模块,安装配置繁琐。而且 Apple Script 语法如日常英语,新手轻松入门;Python 语法规则多,学习曲线陡峭。例如批量处理图片,Apple Script 短短几行代码搞定,Python 写起来更复杂。

和 JavaScript 相比,Apple Script 专注 Mac 本地自动化。JavaScript 多用于网页交互、前端开发,虽功能强大,但要深入 Mac 系统底层,操控系统功能、应用程序,就 “鞭长莫及”。Apple Script 则能深挖 Mac 潜力,从系统设置、软件启动到文件整理,统统轻松拿捏。

总之,Apple Script 凭借系统集成度高、语法亲民、本地操控强等优势,成为 Mac 用户追求高效、定制化体验的首选,在 Mac 自动化领域稳稳占据一席之地。

四、Apple Script 的缺点是什么

虽说 Apple Script 在 Mac 系统里 “大杀四方”,但与一些通用脚本语言相比,也有些小短板。

一方面,它的生态圈子相对较窄。Python、JavaScript 等拥有海量第三方库,能轻松涉足人工智能、网页开发、数据分析等诸多领域。Apple Script 专注 Mac 自动化,要是想搞个酷炫的网页应用或者复杂的数据挖掘项目,它就有点 “爱莫能助” 了。

另一方面,跨平台兼容性欠佳。Python 能在 Windows、Linux、Mac 等系统 “畅行无阻”,JavaScript 更是网页开发标配,可 Apple Script 紧紧扎根 Mac OS,换到 Windows 系统,代码就如同 “水土不服”,难以施展拳脚,限制了其在多平台开发场景的应用。不过,在 Mac 自动化的主场,Apple Script 靠着深度集成系统、操作简便的优势,依然是众多 Mac 用户的得力帮手,大家按需选用即可。

我也是使用了Raycast之后才知道有Apple Script这个脚本语言,对于在Mac上实现一些自动化来说它天然有优势,但是由于历史原因,它的语法和其他语言的语法差异很大,对于没有编程基础的人来说是优势,但是对于程序员来说可能是劣势了。但是无所谓,有了AI,谁还自己写脚本呀,哈哈。

虽然Mac内置的系统软件对Apple Script很友好,但是三方软件对Apple Script的支持并不是很好,所以如果你想要使用Apple Script调用某个第三方软件的内部功能,恐怕你要失望了。建议仅用于自动化操作系统软件和执行一些系统指令。

明天继续了解一下[[20250102-Raycast相见恨晚]]中提到的Raycast的几种脚本语言之一的Bash。虽然相较于 Apple Script 来说,Bash 其实一直在用,但也仅仅只是写一些简单的脚本,它究竟是个什么东西,运行机制是怎样的,明天再好好了解一下吧