教程

Automater 新手入门

0.99

一个视野开阔的起点,让你看见 macOS 自动化的全局,就是 Automator 能给你的最好礼物。

按:本系列文章写于我本科的课余时间,当时 Automator 还是 macOS 上最重要的自动化工具之一。白驹过隙,如今原生自动化已让位于 Shortcuts,但 Automator 仍然远远比后来者稳定,且从 Automator 这款历史悠久的工具入手,或许更能理解 macOS 自动化——而不是站在 iOS 的外来者视角。

由于平时写的杂文实在过多,根本来不及发,本系列文章就一拖再拖,直到 Automator 本身都成了活化石。虑及选题古老,我将系列文章全部免费发布。

你印象中的电脑高手,都是怎样操作电脑的?黑漆漆的深夜里,穿着融入夜色的套头衫,在荧幕前噼里啪啦敲键盘?

但是,还有一类玩家,他们的电脑好像“懂”用户的心思,不用指挥,自己就会把文件分类整理、将乱码文档修复妥当;随便预览一个文件,一排常用的打包、加密等等快捷操作按钮就在手边;结束工作,他们只需要对电脑说一声“Hey Mac,现在休息”,屏幕就会默默休眠。当用户睡着时,电脑还在安安静静地备份当天文件。

唯有将电脑打造得像钢铁侠电影里一样炫酷,才是现代 macOS 高手该有的样子。自动化工具发展到今天,早已经不是 Power User 的专利,许多没有编程基础的小白也能打造出自己的自动化动作。

iOS 上的 Shortcuts(彼时还叫 Workflow) 出现后立刻大火,在 Launch Centre Pro、Drafts、Pythonista 等工具几分天下的局势中成功突围,凭的就是模块化设计,只需要像搭积木一样简单拖动模块,就可以做出一个可用的动作。即使是不介意钻研的 Power User,也不会拒绝这样易用的工具。

而放眼 macOS 的自动化领域,目前叫得上名字的 Alfred、LaunchBar、Keyboard Maestro 等工具都有一定的上手难度,似乎缺少像 Workflow 那样人人都能用的工具。

其实,macOS 自带的 Automator 就是大家呼声极高的“Mac 版 Automator”。 实际上,论辈份的话,Workflow 这个后生多少还从 Automator 那里继承了经典的模块化设计[^1]。

在上手简单的同时,Automator 也保持了极高的可玩性,集成诸多第三方应用、还支持运行脚本,再能折腾的 Power User 也不会一玩就玩腻味,其中不乏又实用又酷的动作:

  • 用正则表达式对文件批量重命名
  • 清理压缩包中的垃圾文件
  • 把乱码的文件名改回中文
  • ……

Automator,正则表达式,进而是各种脚本,这些自动化工具往往能够让你一拍大腿:原来 macOS 都给我们提供了那么多选择!不同于现成的应用,自动化不是望一眼就能把使用场景想尽的锤子、剪刀,它们不会把解决方案喂到你嘴边,而是提供给你一些原料,让你打造出其他具体工具。可以说,自动化工具是创造其他工具的车间

而且这个车间里,即有简单的图形化工具 Automator,也有进阶的 AppleScript 和 Shell 脚本,总能够打造出你需要的工具。

Automator 不仅是 macOS 自动化的重要一环,更是一条串起整个 macOS 自动化的主线,新手可以沿着图形界面上手,老鸟则能在脚本领域找到新思路。本系列文章也会以 Automator 为基础展开,当然,把 Automator 的初级和高级功能都玩转后,切换到其他工具也是轻松的事情。

从代码到图形界面

macOS 的自动化生态一片繁荣。

每台 Mac 电脑,都自带了脚本编辑器和 Automator 自动操作;第三方应用中,更有 Keyboard Maestro、LaunchBar、Alfred、Hazel 等一众自动化明星。每当我们对目前的工作方式感到疲惫乃至绝望时,往往可以通过自动化工具找到更简单数倍的解决方案。

macOS 及其前身上的两大创造,为如今众多简单而强大的工具奠定了基础:

  1. 近似自然语言的 AppleScript
  2. 开创图形化编程先河的 Automator

这些伟大的发明并不是一蹴而就。让我们把目光转向上个世纪,看看 macOS 的自动化生态是如何成长起来的。

Apple, say Hello World

在 20 世纪最后的 10 年里,苹果从排版语言 Hypertalk 中获得灵感,推出“语法像说话一样简单”的 AppleScript,从此开启了 macOS 的自动化历程。在此之前,也许只有 Hacker 们才会用晦涩的命令来操控电脑,而 AppleScript 的出现,让普通人也有了和 Mac 沟通的机会。

连苹果的联合创始人 Steve Wozniak 也说:

AppleScript puts incredible power in the hands of regular users without putting a lifetime of effort into this language

1991 年,AppleScript 伴随 System 7[^2] 发布后,一个叫 Sal Soghoian 的家伙捣鼓起了这种新型的脚本语言。Soghoian 用 AppleScript 来排版、打印菜单,还四处和人分享——顺便提一句,他用是一台从朋友手里搞来的二手麦金塔。这就是那个年代的迷人之处。

这位高玩引起了苹果的注意。很快,他就被招入了苹果公司。也正是从那一天开始,一条全新的自动化道路开始在苹果内部酝酿。

Automator 手里拿的不是炮筒

时间很快到了 2005 年。伴随着 OS X Tiger 的发布,Soghoian 交出了他的作品:Automator,一款图形化的自动化工具。对于当时主要依赖代码的效率工具界来说,Automator 诞生所带来的轰动绝不亚于近几年 Workflow 的问世。

的确,此前的 AppleScript 作为一门编程语言来说已经足够简单、足够像自然语言,但是仍然有一定的门槛。而且,用 AppleScript 写成的脚本文件执行起来也不够方便。比如想把当天最热门的极简主义壁纸设成桌面背景,这事儿要是搁到 AppleScript 手里,就算你把脚本写出来了,八成交给朋友后他们也不懂怎样用。

同样一个换壁纸功能,Automator 是怎么做的?双击 Automator Application 的图标,好了,搞定。 相比脚本,一个 Automator 动作就是一个打包好的工具,你甚至可以不用管它运行时内部发生了什么,也能正常使用它。

时至今日,我们最先接触到的自动化工具,往往都沿用了 Automator 式的图形化界面,比如,Workflow,IFTTT,Keyboard Maestro……并不是说我们再也不用写代码了,而是能够拖动几个现成模块解决的问题,就可以不用写代码。况且,Automator 也支持 AppleScript 和其他脚本语言,我们还会在本系列文章的后半部分通过脚本来扩展 Automator 的功能。

为什么仍然要用 Automator

有人担心,Automator 毕竟是一款古董级的自动化工具,关于它“廉颇老矣”的声音并不少见。要我来回答“Automator 有没有过时”这个问题的话,我会从两个方面来作答:

  1. 兼容性: 苹果还在为 Automator 提供支持,Automator 本身也支持通过 AppleScript 和 Shell 等脚本进行扩展。
  2. 实用性: Automator 功能并不落伍,甚至有许多第三方应用难以实现的功能。

先来说兼容性。的确,时至今日,macOS 自动化界已经涌现了不少优秀的工具,相比之下,苹果去年还 取消了自动化经理一职,我们以前对 Automator 的担忧是有道理的。但是在今年的 WWDC 上,苹果又重新把 Automator 带回了我们的视线,为它增加了 Quick Action 快捷操作按钮和 Touch Bar 支持,赋予了 Automator“亲儿子”的待遇。所以“Automator 会不会被砍”这样的担忧,我觉得已经不攻自破了。

至于 Automator 的实用性,则更不用担心,作为一个自动化工具,它从制作、功能到启动方式都有自己独到的优势:

  1. 制作方式简单: Automator 采用了搭积木一样的模块化设计,一般来说你不需要写代码就能够拼出一个可用的自动化动作。我在 Power+ 中写过一篇文件重命名指南,其中一大堆进阶动作都只是几个模块的组合。
  2. 功能覆盖全面: 除了自带的模块,如 Office、Photoshop、Pixelmator Pro 等等第三方工具也提供了 Automator 模块,允许我们把文档格式转换、图片缩放等等常用功能直接融入 Automator 工作流;另外,Automator 也支持运行 Shell、AppleScript、JavaScript、Python 等脚本,这让它的潜力几乎是无限的。尽管 Catalina 砍掉了不少脚本语言,但是一行命令就能把它们带回来,而可以是任何你喜欢的版本。
  3. 启动方式灵活: 不同于多数的自动化工具,Automator 提供了多达 8 种启动方式,从快捷键、右键菜单到监测文件夹变化后自动运行,在最新的 macOS Mojave 中还适配了 Finder Quick Action 和 Touch Bar,几乎我们常用的启动方式它都有提供,可以让工具来适应我们的习惯。

总的来说,Automator 的自带模块经过十几年的打磨,已经变得非常成熟,在最新的 macOS Mojave 下也鲜有不兼容的情况;而 Automator 进阶功能主要靠代码和第三方支持,几乎不受系统升级影响,往往只需要一些并不复杂的脚本,就可以用 Automator 实现批量清除垃圾缓存、解压系统不支持的压缩包等等附加功能。

Automator 就是你电脑里的瑞士军刀,你可以随手做出一个自动化动作来应对复杂、机械的任务。即使距离诞生已经过去了 13 年,Automator 仍然是一款不过时的自动化利器。

希望你从 Automator 开始,开启和 macOS 对话的自动化之旅。

[^1]: Automator 比 Workflow 诞生早了近十年。 [^2]: System 操作系统是 macOS 的始祖。这一版本同时还带了文件拖拽、彩屏显示等开天辟地的特性,并且没过几年苹果就进入了 Mac OS 时代。