# Automator 手册第二章：Automator 中的基础动作

> 本文公开全文。

原文：https://utgd.net/article/20181

通过第一章，我们基本知道了 Automator 能用在哪些地方。接下来的两章里，我们将了解更多具体的 Automator 动作（Action），并且试着动手创建它们。

第二章的动作比较基础，多数使用了不需要大幅调整的 Automator 自带模块，先实现“能用”的效果；相对的，自定义空间也少一些。通过这一章，希望大家能够熟悉 Automator 的界面，并且理解动作的工作方式。

第三章主要引入一些进阶的模块，并且使用变量、循环等概念，将第二章的动作打磨得更加完善，不过暂不扩展到更难的脚本内容。两章下来，Automator 自带模块的功能基本就能讲完，常用的搭配组合也都能涉及。

现在，欢迎开始搭建你的第一个 Automator 动作。

## 从认识界面开始

鉴于目前官方翻译让人看得一头雾水（请在没有配图的情况下试着理解一下这句话：自动操作中的操作都是工作流程中的单个步进），我们接下来会用一些形象的比喻来理解 Automator 界面。沿用上一张“车间”的比喻，整个 Automator 界面就可以分成 5 个区域：

- 左侧，资源库：所有 Automator 步骤都分门别类呈现在这里。可以点击“资源库”按钮把它折叠起来。

- 右侧，工作流程区：步骤在这里串联成工作流程。可以点击任意步骤左侧的小箭头把它折起来，制作复杂动作时，这是一个简化界面的好办法。

- 左下方，步骤详情区：这部分就像摊开的工作手册，详细解释了当前步骤的输入输出与使用方式。支持中文。

- 右下方，日志监控台：运行动作后，可以显示动作是否运行成功、哪一步出了错。可以帮助我们排查问题。

- 右上方，控制按钮：包括开始、暂停等按钮，用于测试动作。刚开始用 Automator，你很可能做出无限死循环的神奇动作……别担心，可以通过控制按钮强行结束它。

我们创建一个 Automator 动作，实际上就是根据“工作手册”从零件区取出一系列步骤，在工作区组合起来，然后照着监视台的提示把动作调试到正常运行。

## 理解 Automator 的工作方式

之前我们把整个 Automator 动作视为一个车间，但是每个步骤具体怎样运行，还没有提及。是时候来看看神秘的 Automator 小车间里面都在做些什么了。

和 Automator 动作一样，每个步骤的基础工作方式其实也是“输入、处理、输出”。工作流程就像一条流水线，经过一通加工，返回给你处理好的成品。

流水线处理听上去有点呆板，其实很契合我们使用 Automator 的初衷：一键完成一长串操作。在 Mac 电脑上，诸如给文件标上日期、添加前缀、调整图片尺寸等常见操作，单个看上去都不难，但如果不断重复一套固定的流程，估计你很快就要犯恶心了。而且随着意志力逐渐被消磨，越到后面还越容易出错。这类事情，就适合交给 Automator，又快又准。

不过，这条流水线也可以做一些调整，来适应更加复杂的任务。具体来说，对待输入有下面 3 种方式：

- 接受上一步的输入：Automator 的默认输入方式。如果两个步骤之间有箭头相连，就说明下面的步骤接受了上一步的结果。

- 接受来自变量的输入：工作流程是线性的，但是借助变量（具体下一章再说明）可以把输出暂且放到一边，完成别的工序后再取用。比如批量重命名文件，就可以先把文件设为 文件 变量，在按顺序输入完自定义的文件名后，再结合 文件 变量和输入的文本进行命名。

- 不接受任何输入：有些步骤不处理任何输入的东西，只是自顾自干自己的事情，比如发送通知、显示提醒，那就可以右键点击这些步骤，选择“忽略输入”。

配合着图片和文字解释，你有没有回想起 Automator 图标上那个小机器人？没错，它手里拿着的就是一根管子，代表连接各个步骤。

补充包 \| Automator 动作在哪里：除了 Workflow 和 Application，其他 6 类 Automator 动作创建后都会直接存进系统资源库，源文件找起来并不方便。我整理了它们的存储路径，方便你找到源文件进行编辑或删除：

- 快速操作：~/Library/Services

- 日历提醒：~/Library/Workflows/Applications/Calendar

- 文件夹动作：~/Library/Workflows/Applications/Folder Actions

- 图片捕捉插件：~/Library/Workflows/Applications/Image Capture

- 听写命令：~/Library/Speech/Speakable Items

- 打印插件：~/Library/PDF Services

基本知识讲完了，开始通过一些简单的动作了解 Automator 模块。Automator 中的模块多达近百个，如果你装了第三方的自动化工具，资源库中的模块会轻松涨到几百个。但这些模块并不是每个都要深入掌握的，比如那种把歌曲导入 iTunes 的古董模块，本系列文章就不会涉及。

下面我们开始通过动作实例认识模块。Automator 的模块基本可以按照输入对象的类型来分类，这章将介绍：

- 通用文件动作：能够处理所有类型的文件，例如移动、拷贝、重命名或者过滤出符合要求的文件。

- 专属文件动作：专门处理某类格式的文件，例如转换格式、缩放图片、压缩 PDF。

- 文本动作：专用于文本处理，例如获取邮件地址、文本转音频。

- 网页动作：专用于和网页交互，例如过滤链接、下载图片。

注：部分动作只是几个自带模块的简单组合，如果你找了一圈发现本文不提供下载，还请见谅——下载的工夫，自己照着做一个动作都足够了。

## 文件动作

文件和文件夹相关的模块数量是最多的，除了单独使用，不少情况下这类模块会也用到文档、图片、网页等相关动作中，充当“胶水”或者“润滑剂”。

通用文件（以及任何专有格式）相关操作往往支持批处理，可以把一堆文件全拖到 Automator Application 上，或者选中文件后用快速操作来一次性处理它们。

这一章先来看最重要的几类文件操作，在分开介绍后，会有一些串联多个文件动作的实例。

### 按种类整理文件（文件夹操作）

涉及模块：

- 过滤访达项目

- 移动访达项目

- 拷贝访达项目

在所有文件相关的模块中，有一个地位比较独特：过滤“访达”项目。它起到过滤器作用，可以让 Automator 准确选中我们想处理的文件，并交给后续的模块。整理归档、清理垃圾……都离不开过滤访达项目，过滤可以说是很多动作的第一道大关。

想看清过滤的效果，最好就是拿一个乱得让人不想整理的文件夹来开刀。电脑哪里最乱？桌面可以拜托“堆栈”，那就挑另一个重灾区下载文件夹吧。

可以看到，原本乱七八糟的文件，很快就按种类分好并存进了对应的文件夹。每个归档动作只有两步，过滤之后，丢给“移动访达项目”来归档。

默认情况下，Automator 会比较“啰嗦”，一旦你添加的模块有可能改动文件，它就会提醒你加上“拷贝访达项目”的辅助模块，生成一个文件的副本任你捣鼓，出错了也不至于把原文件搞坏。不过在归档文件的动作中，我们要处理的正是原文件，所以不应该用拷贝模块。

让我们回到过滤。条件设置是整个归档动作的核心，图中展示的是按照文件拓展名来过滤，此外 Automator 还支持名称、种类、大小、日期等条件。

可惜条件数量再多，只是单个使用的话，难免有匹配不上的情况，所以 Automator 还允许组合多个条件，形成更加精确的匹配条件。首先就是条件之间的关系，可以有 3 种：

- 全部：条件越多过滤越严格，层层筛选出最符合要求的文件。

- 任一：用于一次性处理好几类文件，比如 jpg、png 格式就可以组合在一起过滤。

- 没有：适合拿来排除特殊类型的文件，比如重要的配置文件、等等。

光有组合感觉还不够，比如同样是来到下载文件夹的图片，AirDrop 过来的手机截图可能我们直接就插到文章里，怎样把它们排除到需要归档的图片之外？只要按住 ⌥Option 键加上一条子条件：“以下没有条件被满足：名称开头是 IMG\_”，就能排除 AirDrop 过来的图片（手机自己产生的图片名一般都是 IMG\_ 打头）。

子条件也可以成组出现，并且层层嵌套，具体有多少层我也没试过，但肯定够你用。如果无论怎样搭配条件都不对劲，只能说明一开始就不应该用“过滤访达项目”这一模块。

小练习 1：除 Application 外，其他的 Automator 动作都保存在系统文件夹中，哪日重装系统就会统统消失。现在的问题是，如何把所有自定义 Automator 动作自动备份到 iCloud？

提示：使用拷贝模块。

### 文件自动解压（文件夹操作）

涉及模块：

- 过滤访达项目

- 打开访达项目

我们修整一下刚才过滤模块，继续用它实现文件自动解压。

首先还是根据文件拓展名 \.zip 过滤出 Zip 压缩包，然后交给下一步“打开访达项目”，最简单的解压动作就实现了。

当然，系统解压工具支持的格式很有限，所以我们还要引入 Unarchiver、Keka 这两个第三方工具。之所以选它们，不仅因为它们格式支持更广，最重要的是这两个工具可以不开应用直接就直接实现解压。两个工具都没有提供 Automator 模块，那怎样把它们接入工作流？答案还是“打开访达项目”模块，只是需要把“打开方式”设置成第三方解压工具。

尽管调用了第三方工具，但是 The Unarchiver 和 Keka 的主应用都不会启动，也就犯不着解压完后手动把它们退出，做到了润物无声。

熟悉之后，可以用 Unarchiver 或者 Keka 接管绝大多数类型的压缩文件。

Aria2 等下载工具的用户需要多一步操作，由于下载到一半的文件也会以 \.rar 等拓展名结尾。为了避免把没下完的文件也解压掉（只会引发一串系统错误），可以将 Aria2 的下面目录指定成 ~/Downloads/Aria2，因为文件夹操作只负责当前文件夹，至于子文件夹中发生了什么，它不管。

### 文件重命名

涉及模块：给访达项目重新命名

Automator 几乎是你能找的最好的免费重命名工具，它在提供丰富配置选项的同时，保留了易懂的图形化界面。

当然，Finder 自己也有批量重命名功能，直接通过右键菜单就能启用，为什么要使用 Automator？可以列出的理由非常多：

- 一次进行多项重命名操作：Automator 可以把多个重命名模块串联起来使用，还可以接上其他模块，比如重命名后移动文件将其归档。

- 丰富的日期选项：可以自定义日期格式，标出 2018\-07\-10 这种更常见的日期格式；还可以自动标上文件修改、创建的时间，方便查看文件的版本。

- 细致的文件编号：可以设置数字编号的位数，方便 IINA 等播放器正确识别剧集（1 位数字的编号会被认错）。

- 支持改变文件名大小写：可以让文件名中的英文全小写、全大写或者仅首字母大写。

- 支持修改文件拓展名：手动改文件名时，如果动到拓展名就会被系统警告，Automator 则可以跳过提示框，使用过程更清爽。

- ……

我们试着串联“添加文本”和“更改大小写”两个重命名模块，展示一下 Automator 的批处理效果：

重命名模块具体的用途非常多，这里放一个大家都懂的“修复视频拓展名”的例子，当然目的不是为了鼓励下载某些不可名状的资源，而是希望能激起大家“随手做个 Automator 动作解决问题”的意识。

小练习 2：猜猜这个动作的流程是怎样的？

## 专用文件模块

前面介绍的文件模块，几乎任何格式的文件都能处理，是入门 Automator 的好选择——即便你还不是很清除自己想用 Automator 干什么，也能做出几个能用的东西。

接下来这部分的模块，每个都专门对付一类文件，有的你可能永远都用不上。但是我们有必要知道它们的存在，等哪天遇到问题了，脑子里可以砰地蹦出来对应的现成模块，而不是绞尽脑汁自己编写脚本、重复造轮子。

### 批量处理图像（快速操作，推荐 Finder Quick Action）

涉及模块：

- 更改图像类型

- 缩放图像

和接收通用文件一样，对于任意专门格式的文件，Automator 也支持批处理。这一小节的几个图像模块，单个功能都不复杂，但是结合批处理后会很好用。

一个很容易被忽视的模块是“更改图像类型”。用到格式转换的情况还不少，比如 macOS 原生的截图都是 PNG 格式，其透明背景发到微博或知乎后背景就会乱套，像下面这样变成黑色甚至绿色，所以需要先转换成 JPG 图片。

有些人可能习惯一张张打开图片来改格式，这样很慢；预览工具虽然可以批量导出，可惜相当吃内存，你不妨试验一下连改十几张图，看看电脑会不会卡（请先备份好资料，如果死机了我不负责）。

这时候就要动用 Automator 了。创建一个快速操作，添加“更改图像类型”模块，一个简单的动作就完成了。留意一个细节，工作流的输入会根据第一个模块自动调成“（自动）图像文件”，因此，多数情况下对不需要手动选择输入类型。

再来看另外一个图片模块：缩放图像。经常有一些尺寸太大的图片（尤其是手机拍的照片，动辄十几兆），超出了某些网站的上限，没法上传。借助缩放模块，就能做简单的压缩处理。

拿 macOS 的截屏（2560 像素宽度）来测试，压缩到 960 宽度后体积骤降到原先的 1/8 不到，效果非常明显。

但是 Automator 自带的不包无损压缩，所以大尺寸的图片缩放后画质损失是肉眼可见的，可以把分辨率稍稍调高一些，避免压缩过度。

### 压缩 PDF（快速操作，推荐 Finder Quick Action）

涉及模块：

- 压缩 PDF 文稿中的图像

- 移动访达项目

用 PDF 格式来保存网页是一种比较通用的做法。直接由网页打印而来的 PDF 文件体积一般较大，可以用 Automator 加一道压缩工序。

PDF 压缩模块针对的是 JPEG 图片，选择中等压缩质量的话，一般能够将文档大小压缩掉两三成。

如果你经常需要把网页打印成 PDF，不妨将上述工作流程保存为打印机插件，这样就可以在打印时顺带把图片压缩掉；更进一步，这个“打印并压缩 PDF 图片”的插件还能够绑上快捷键——有一个比较神奇的思路是把快捷键设成 ⌘Command \- P，使用效果就是连按两次 ⌘Command \- P 即实现打印压缩一条龙处理。

小练习 3：还有一种压缩 PDF 的思路，就是通过文件夹操作自动压缩，涉及的模块都是上文提到过的，请自己尝试一下如何实现。

## 文本动作

有必要说一下，Automator 里的文本模块比较弱，不比 Shortcuts 里的文本框可以成为沟通数据的桥梁。除了下一章的“请求文本”模块可以作为万能输入口，更多时候，Automator 中的文本模块都是单打独斗。

### 提取想要的文本（快速操作，推荐右键菜单）

“从文本中提取数据”是一个很聪明的模块，可以从大段文本里提取出网址、电话号码、邮件地址等类型的数据。

有时候我们会看见文字和链接夹在一起的文章，如果你不希望战战兢兢地挪鼠标选取（还可能漏选最后几位），就可以做个快速操作：

上面这个提取电话号码的例子中，我只是粗略选一段文字，右键“提取数据”就把拷贝到了剪贴板。

" alt="Alt text"\>

提取数据属于“以防万一”型的模块，一旦用上，就能解决大问题。早年间，我在勤工俭学时接到一个任务，要制作一份栏目合订本，就在上线前一刻，很不凑巧服务器开了小差，不能直接用图床工具上传图片，只能把图片拖到浏览器、再从 HTML 代码里面抠取图片地址。

我想，坏了，合订本八成要延迟上线……忽然想起，Automator 可以提取链接，何不一试？果然咔嚓咔嚓就把链接拔了出来，很快完成了图片排版，合订本最后也准时发布了。

数据提取模块相当于现成的一套过滤器，以后我们获取图片链接、下载地址还会再和它见面。“拷贝至剪贴板”这个模块以后会很常用，赶紧和它混个脸熟。

想要提取更多其他种类的文本，需要使用正则表达，只是现在为时尚早，太快反倒会让你陷入“怪圈”。拿着锤子的人看啥都是钉子，学了万能的正则后也会受影响，某次一群 Workflow 老玩家研究用正则表达式匹配邮件地址，讨论了半天，结果有人冒出来一句：不是自带这个模块吗？

要想避免成为看啥都是锤子的人，就要多了解一些东西。是否知道一个模块的存在，会直接影响我们创造动作时的想象力。

### 从文本制作音频（快速操作，推荐右键菜单）

涉及模块：文本至音频文件。

来看一个连接文本和文件的动作：将文本转换成音频文件。核心模块就是“文本至音频文件”。

Automator 调用的是系统人声，比较机械，但是发音准，所以这个动作在一些外语学习者的圈子里小有名气。如果你真的需要经常练听力，可以把音频的存储位置设成 iCloud 文件夹，方便在移动设备上听。

“文本至音频文件”模块自带了存储选项，可以指定保存的位置；但有些模块（比如缩放图像）则不行，只会在原文件边上生成一个副本，得再加一个移动访达项目的模块来改变默认存储位置。

## 网页模块

最后一个大类是和网页交互的模块。Automator 的网络模块重在获取资源，相对的，和网页的交互能力则较弱，多数动作都是用于下载。

### 批量下载网页图片

批量下图这个需求，估计不少人折腾过，还在喊“右键已按烂”的人估计都成古董了吧。这里给个 Automator 版的批量下载动作，只要是当前网页上的图片，都能扒下来。

本动作的 4 步骤都是网页模块中的扛把子。前 3 个模块组成了一道过滤系统，分别滤出整个网页、图片链接和 JPEG/JPG/PNG 格式的图片链接，能够保证不漏图，也不至于把网页图标等无关元素下载下来（如果你还是下载到了用户头像图片，看下一节）。

其中“过滤 URL”这一步配置项相当丰富，如果你不是跳着读这篇文章的话，此时是不是想起了文件模块的过滤设置？没错，过滤 URL 时也可以配置得很详细，而且你可以继续添加一条“整个 URL 结尾是 GIF”的条件，把这个动作变得更完善。

\> 动作下载 🔗

### 下载当日热门壁纸

最后一个动作本身和效率无关，不过值得拿来和上个动作对比。以获取 Simple Desktop 的壁纸并设为桌面背景为例，整个工作流程是：

- 获取 Simple Desktop 首页内容

- 过滤出图片地址

- 加上后缀，用于下载大尺寸图片（先不管这一步，需要脚本）

- 下载图片

- 设为背景

相信你已经看到和上一个动作的差别了：这回获取链接所用的模块是“从文章中获取 URL”。前一个下载图片的动作，为求扒得干净，会从整个网页里扒取；这次只需要从正文里获取图片地址，直奔文章找就行。现在我们明白，如果不想下载用户头像、题图等图片，就用“从文章中获取 URL”。

## 成为合格的检修员

刚开始创建动作，出错是很正常的，甚至别人电脑上用得好好的动作，照搬到你那儿就可能运行失败。这时候先别怀疑自己的运气，我们踏踏实实地用 Automator 来检修问题。

先找到出问题的动作原文件，拖到 Automator 图标上打开，可以看到动作内部的所有细节；老玩家此时能够像主治医师一样凭经验“下刀”，但是新手还是先按下面的步骤进行排查，慢慢摸索。

在讲完检修过程后，我们会再看几类常见错误，方便你快速对症下药。

### 检修 Automator 动作

如果要检修、调试一个 Automator 动作，我们会用到下面几个方法：

- 日志监视器：界面右下方的区域，显示动作运行的详细日志信息。

- 每个步骤的结果：详细查看每一步的输出是什么。

- “步进”按钮：一步一步执行步骤，一次一次显示结果。

- 停用步骤：很难判断是不是某个步骤出错的时候，可以把它停用试试。

第一步一定是看日志。一个双击运行下来没有任何错误提示的动作，内部隐含的错误也会记录在日志里。新手经常会发现，自己做完的文件动作“咚”一声运行完毕，结果什么都没发生，也没瞧见弹出提示——其实此时你在别处的文件可能已经被删了，只是 Automator 还以为任务已经搞定。只有打开日志，才能进行深度检修。

（如果你没看到右下方的日志界面，点一下图中的按钮就能显示详情。）

\*\* 查看日志可以帮助我们大致定位错误步骤。\*\*下面是一个“找不到文件”的常见错误，日志详细告诉了我们第一步就出了问题，甚至具体哪一个文件找不到也会有提示。刚上手时多留意日志，可以避免很多新手病。

一般来说，日志帮我们查出来的是文件找不到、命令不存在等“大错误”，但有时动作运行顺畅，只是最后输出的东西不是我们预期的，这时靠日志就不够了。我们可以检查每一步的结果，找出到底哪一步开始输出产生了偏差。

除了发送通知这种啥都不输出的步骤，多数步骤都应该有输出，所以看到上图左边这种“没有结果”的步骤就可以往上排查了。为什么不是往下？上游不干净下游才会被污染，当然要追本溯源找问题。玩 Shortcuts 的人肯定记得“快速查看”这个步骤，编辑、调试动作时它常常被用来检查上一步的运行结果。“结果”的功能和快速查看类似，而且每个步骤都自带，很方便。

上面两个是查看错误的方法，下面的方法侧重调试，需要你多尝试。先来看步进。直接运行的话，所有步骤会一次性跑完，可能我们还没反应过来，系统就弹出一系列错误提示了。想要实时观察每一步运行的效果，就要用步进按钮代替正常的运行。步进一次只执行一个动作，干完就暂停，需要你再点击一次才会继续下一步。

步进到哪一步忽然不对劲了，这时候不用着急删除那一步骤，更好的做法是停用它，万一调试不成还还原到开始的工作流程。

步骤被停用后就等于被跳过了，上一步的输入会隔着被停用的步骤直接传给接下来的步骤。等检修完毕、动作可以正常运行时，就可以放心删除被停用的步骤。

### 常见问题和解决方案

随着检修次数的增加，相信你已经越发接近一个排雷老手了。但我们没必要把所有坑都踩一遍，下面是使用 Automator 动作时的常见问题，看到下面几类系统提示时可以优先采取对应的解决方案，比从头检查一遍效率更高。

#### 没有权限

这个问题很好解决，都不需要打开 Automator。一般点击“OK”允许运行即可，如果还是没用，就找到“系统设置 \- 安全性与隐私 \- 自动化”，把你的 Automator 动作拖进去。

升级到 macOS Mojave 的用户，基本每次运行新动作都会遇到类似的权限请求。新系统对应用的权限管得比较严，只要动作涉及系统操作（如模拟键盘、鼠标点击等），都会受到限制。

#### 找不到文件

Automator 的步骤已经包装得足够简单，要是找不到文件，一般这锅要甩给动作的制作者……下面两类情况都会导致找不到文件：

- 不涉及脚本时：往往是用了“获得指定的访达”项目步骤，但是别人电脑上的文件在你这儿不一定存在。推荐的做法是删掉这个步骤，换成“请求访达项目”。

- 涉及脚本时：制作动作的人填写了绝对路径，但是你的电脑名字和他不一样。解决方法是找到 /Users/路径 之类的字样，改成相对路径 ~/路径。

这类错误也提示我们，制作动作时要选择更加通用的步骤，方便别人也方便自己。想象你哪天换了电脑，结果所有动作都挂掉了，一整天的工作都因此磕磕绊绊，那该是多么糟糕的事情。

#### 打不开 Automator Application

最后这个“问题”其实和 Automator 无关，只是系统对于外来应用的防御机制。Automator Application 是货真价实打包好的应用，但网上淘到的动作几乎都没有开发者认证，所以直接是打不开的（我自己就不能直接打开从本系列文章中下载的 Automator Application……）。

比较好的做法是检查后再打开。先用 Automator 开启 Application，确认里面没有莫名奇妙的步骤（尤其涉及脚本时），降低电脑被入侵的危险。接着按住 ⌃Control 打开 Application，或者直接右键打开，以后就能正常使用。

## 练习答案

练习 1 答案：最合适的备份动作类型当属文件夹操作，当然日历提醒也行，但是文件夹操作可以监控系统动作文件夹，每次改动完动作就自动备份。用到的模块是“获取访达项目”和“拷贝访达项目”。这个动作其实只是简单模块的叠加，但能够解决烦人的 Automator 备份问题。

练习 2 答案：利用替换拓展名选项。

练习 3 答案：先过滤，再拷贝，最后压缩。这个练习的意义在于突出文件模块的“胶水”作用。除了自动压缩 PDF 文件，以后遇到图片压缩、相片 exif 信息移除等操作，也应该马上想到是不是可以自动监测后执行。

---

[前往标准阅读页](https://utgd.net/article/20181?audience=web)
