macOS设备上的自动操作(Automator)


=Start=

缘由:

简单整理一下近期看到的和自动操作(Automator)有关的使用技巧,方便后面有需要的时候参考。

简单来说就是,macOS上的自动操作当前还适合的场景为:

  • PDF文件处理(拆分、合并)
  • 监控特定文件夹的文件新增情况然后触发特定操作(遥控触发器
  • 日历提醒(由日历中的日程触发运行,它们不接收任何输入)
  • 将shell脚本包装成一个“应用程序”

其它的还有哪些合适的场景后面实际用到了再逐步补充。

正文:

参考解答:

macOS设备上的自动操作(Automator)是一个强大的工具,它允许用户创建自定义的工作流来自动化日常任务。以下是几种妙用,展示了如何利用Automator提高效率和简化工作流程:

1. 文件管理

  • 批量重命名文件:可以创建一个工作流,用于根据特定规则批量重命名文件或文件夹。
  • 移动和组织文件:设置动作以自动将文件移动到不同的文件夹中,基于文件类型、日期或其他属性。(这个感觉可以有)
  • 压缩/解压多个文件:创建一个服务或快速操作,一键压缩或解压多个文件。

2. 图像处理(这个感觉可以有)

  • 调整图片大小:构建一个工作流来批量调整图像的分辨率或尺寸。
  • 转换图像格式:使用预设的动作或通过脚本实现不同格式间的转换。
  • 应用滤镜或效果:结合AppleScript或第三方应用程序对图片施加特效。

3. 文本编辑与处理

  • 文本替换:编写一个Shell脚本或使用内建动作来进行批量化文本查找和替换。
  • 生成报告:从日志文件或者其他数据源提取信息,并格式化为易于阅读的文档。
  • 清理剪贴板历史:定期清除系统剪贴板内容,保护隐私。

4. 网页抓取(这个感觉可以有)

  • 下载网页资源:例如下载网站上的所有图片链接。
  • 提取HTML元素:解析网页结构并提取特定部分的数据,如标题、链接等。

5. 自动发送邮件

  • 定时发送邮件:设定触发器,在特定时间点发送预写好的电子邮件。
  • 个性化邮件营销:读取CSV文件中的联系人列表,并向每位收件人发送个性化的邮件。

6. 多媒体处理

  • 音频文件编码:改变音频文件的编解码方式或调整音量。
  • 视频转码:批量转换视频文件的格式或压缩率。

7. 应用程序启动与控制

  • 快捷启动常用软件:创建一个工作流来一键启动一系列经常使用的应用程序。
  • 自动化iTunes播放列表更新:添加新歌曲到播放列表或者同步音乐库。

8. 开发者工具

  • Git命令行集成:通过Automator封装常用的Git命令,简化版本控制系统操作。
  • 代码片段管理:创建一个简单的界面来管理和插入常用的代码段。

9. 系统维护

  • 清理临时文件:定期清理不再需要的缓存和其他临时文件。
  • 磁盘空间监控:检查硬盘使用情况,并通知用户当存储容量接近满时采取行动。

10. 定制工作流和服务

  • 定制化服务:根据个人需求创建独特的服务,如一键备份重要文件夹至云存储。
  • 快速操作:利用Quick Actions(快速操作),可以在Finder右键菜单中直接访问你创建的工作流。

通过探索和实践,你可以发现更多关于如何利用Automator来满足特定需求的方法。记住,Automator的强大之处在于它可以与其他macOS技术如AppleScript、Shell脚本以及各种API相结合,从而扩展其功能。此外,随着macOS系统的更新,Automator的能力也在不断进化,所以保持关注最新的变化和技术文档是非常有益的。


Automator 手册第八章:用文件夹操作把手机打造成 Mac 的遥控器

这篇文章的思路学习到了(尤其是借助iCloud文件夹的变化达到“遥控”效果这一点上很精妙),但是设定变量的值,获取下载URL那里没有测试成功,可能还是因为我不够熟练,后面有机会可以再试试。
下载对应的workflow文件试了试也不行,可能是macOS系统(Sequoia 15.2)不一样,Automator(版本2.10 (526))的功能发生了变化导致以往可能有效的方案现在无法生效。

macOS 端版本一:使用现成模块

  1. 过滤访达项目:过滤出文件夹中的 txt 文件。其实 Shortcuts 已经清理过一遍文件夹,再用 Automator 过滤是上一道双保险。
  2. 设定变量的值:将过滤出来的文件设为“文件”变量,便于随后灵活取用。
  3. 打开访达项目:用脚文本编辑器3打开“文件”。
  4. 暂停:停顿 2 秒,等文本编辑器完全打开。在配置好的电脑上也许可以不用花这几秒时间。
  5. 获得文本编辑文稿的内容:获取文本文件“文件”中的下载链接。
  6. 设定变量的值:将下载链接设为变量“链接”,留待稍后取用。
  7. 退出应用程序:退出脚本编辑器。
  8. 获得变量的值:获取“文件”。
  9. 将访达项目移到废纸篓:将“文件”删除。
  10. 获得变量的值:获取“链接”。
  11. 下载 URL:下载刚刚获取的链接。

macOS 端版本二:使用脚本

这次我们使用 AppleScript 脚本来下载,以便调用 Aria2 这一下载利器。

我们沿用上一小节的动作,只把最后一步改成 “运行 AppleScript”,替换原来的 HTTP 下载方式。


在macOS系统上将“预览”不可复制的PDF文件转换成内容可复制的PDF文件。

操作步骤:

  1. 使用【自动操作】中的【将PDF页面渲染为图像】(Render PDF Pages as Images.action)功能,将传递来的PDF文稿的每一页渲染为图像(生成的图片文件的位置比较深,找起来其实不是太方便)。
  2. 再用【自动操作】中的【用图像新建PDF】(New PDF from Images.action)功能,将刚才生成的多张图像,创建一份多页PDF文稿。
  3. 再通过【预览】应用打开第2步生成的PDF文件,即可在预览应用里面对PDF的文字内容进行选中和复制了。

文稿类型:

文件夹操作——当文件被添加到某个特定的文件夹之后可以促使该工作流程运行,并将被添加到该文件夹的文件作为该工作流程的输入。简单来说,可以当作一个“触发器”来用(当往特定文件夹中添加文件后就执行特定的动作,比如打开计算器)。
Todo:当前还没有学会如何读取文件的内容,并将内容传递给一个变量,方便后面使用传入的文件的内容(进行一些特定的操作,比如文件内容是一个URL链接的话就打开这个链接,进行下载等其它所需的操作)。

工作流程——工作流程可以在“自动操作”内部运行。

==

文稿拆分:

  • 拆分PDF:从输入PDF文稿的每一页新建单页PDF文稿。
  • 将PDF页面渲染为图像:此操作会将传递来的PDF文稿的每一页渲染为图像。

文稿合并:

  • 用图像新建PDF:用几个输入图像创建一份多页PDF文稿。
  • 合并PDF页面:此操作会将传递来的PDF文稿的页面合并为一个PDF文稿。
  • 给PDF文稿添加水印:此操作会将图像绘制到PDF文稿的每一页。

……待补充……


截图后OCR并将文字内容拷贝至剪贴板的命令

PATH=$PATH:/usr/local/bin/
screencapture -i ~/ocr.png
tesseract ~/ocr.png stdout --oem 1 --psm 6 -l chi_sim+eng -c preserve_interword_spaces=1 | pbcopy
rm ~/ocr.png
参考链接:

Automator 手册第八章:用文件夹操作把手机打造成 Mac 的遥控器
https://utgd.net/article/20227

Automator Gallery
https://github.com/BlackwinMin/Automator-gallery/

文件夹操作
https://github.com/BlackwinMin/automator-gallery/tree/master/%23Folder%20Action

OCR Screencapture.workflow
https://github.com/BlackwinMin/automator-gallery/tree/master/OCR%20Screencapture

=END=


《 “macOS设备上的自动操作(Automator)” 》 有 2 条评论

  1. 日常工具包:关于通用生产环境的讨论
    https://utgd.net/article/21077/
    `
    人们总是忘了自己所处的日常环境,忽视了许多唾手可得的工具与方法。

    任何一种立场,任何一个标签,如果推行到极致,结果就是什么事情都做不了。若不停购买工具,最后就容易陷入娱乐主义,娱乐至上,把玩弄工具当成了目的;而什么都不买实际上根本不可能,因为一个人只要在网上发表了这个言论,就意味着他买了一台电脑或手机——起码也是租的——那他就没有资格反对消费(尽管可以反对消费主义)。

    大多数工作其实不用花钱,真的可以放心交给日常工具——通常是原生软件和常见的开源软件——而相当一部分稍微棘手一些的材料,一般也只需要购买少数工具或服务。

    # 处理文本的工具(建议选择熟悉的、趁手的工具,不一定是系统原生的)

    无论是 Windows 上的写字版还是 macOS 上的文本编辑器,通常足以处理大部分的纯文本和富文本。
    在文本编辑器中,按住 ⌥Option 键,进入列编辑模式,在各行开头竖着拉一下,就能同时在各行开头输入符号。(实测了一下,不太好用,还是使用 SublimeText 吧)

    这个不太建议用系统原生的工具,除非是在完全没有办法的情况下,使用(熟悉、趁手的)现代文本/代码编辑器的工作效率远比使用系统自带的文本编辑工具要高,体验要好。

    # 现代的浏览器

    几乎所有浏览器也可以查看各类本地文件,并且常常带来惊喜。

    【*】浏览器在处理图片时也有奇效。我曾摸索到一套打印长截图的方法,原理很简单,无非用浏览器打开图片,再尝试打印它,其间只需微调参数,原本细细长长的截图就会被自动分割在几个页面里,打印后不至于细小到连内容都看不清。

    HTML 文件更是潜力无限。在很早的文章里,我就将想要翻译的文章或书籍弄成 HTML 格式,然后丢给 Safari 翻译,借用浏览器自带的翻译功能,免费、无限量翻译外文资料。后来我又继续薅羊毛,用 Safari 批量翻译 RSS 文章的标题,配合适当的自动化工具,几秒钟就能翻译成百上千篇文章。

    # 一款主流的免费自动化工具

    Shortcuts-快捷指令

    Automator-自动操作

    # 运行脚本的工具

    自动化的两种主要方式。在设计自动化动作时,还会权衡一下哪种方案最省力,一般来说,我会面临两类自动化方案:

    第一,GUI Scripting,即基于 GUI(图形界面)的自动化,主要是模拟键鼠操作,需要懂点脑筋、观察一下实际操作,把人的动作翻译成有规律的键鼠操作,交给电脑执行。多数场合下,GUI Scripting 往往简单有效,而且不需要深层的编程知识。这类自动化中最常用的工具就是 Keyboard Maestro。不过,GUI Scripting 恐有临时建筑之嫌,盖其并不需要了解软件背后做了什么,纯粹模仿使用者的动作,你甚至有机会看到光标自己在屏幕上跳动,绝对和“优雅”二字沾不上边。随着软件界面本身的改动,原先的 GUI Scripting 自动化动作也很可能失效,毕竟它们本身就仪仗图形界面。

    第二类是更底层的脚本,直接和软件交流。比如写一个 AppleScript 脚本用于开关暗色模式,就不需要模拟键鼠操作,速度更快、更无痕。显然,这类自动化门槛也更高,前述 AppleScript 就有专门字典(Dictionary),以便使用者可以掌握自动化工具的“方言”。在发现自动化可能性的时候,我会预估一下以后遇到类似问题的概率如何,若是很可能还要打照面,我会写一个相对底层的脚本,尽量确保长期有效;但很多时候,如果只是想临时凑合用,或者任务太急、没工夫打磨自动化动作,这时候就倾向于使用 GUI Scripting。相较于动辄几百上千个可用元素的脚本,制作 GUI Scripting 动作只需要知道两类操作:鼠标点击,以及键盘按键,因为我们和电脑交互时,基本也只涉及这两类输入方式。

    # 模拟键鼠的工具

    GUI Scripting 一般不需要太复杂的代码知识,而在 Keyboard Maestro 之类的软件中,你压根就不用写代码。一个经典用例即模拟输入信用卡信息,老外经常在网上报税,而网页千变万化,写代码反而把简单问题复杂化,不如直接模拟键鼠操作;类似的,在国内登录校园网或公司内网,也可以取道 GUI Scripting。3

    在暂时找不到其他方法,或者情况紧急、无暇细细设计自动化动作时,键鼠模拟常常最直接、最有效。我在工作中常和 PDF 文件打交道,但 macOS 上的进阶编辑工具——不考虑天价的 Adobe Acrobat Pro——屈指可数,而且不少已经停止更新或沦为跨平台的套壳玩具。不过,我借助 GUI Scripting,还是完成了编页码和加目录的辛苦活,虽说和成熟的商业软件不可同日而语,但是原本半个小时的工作如今被被压缩到去一趟洗手间的时间,也非常划算。

    # 图片、PDF和其他:作为瑞士军刀的预览工具

    上一节提到了用 Keyboard Maestro 制作 PDF 加工工具,这也要归功于系统自带的预览工具:它本身就是一个多功能 PDF 阅读器和轻量级编辑器。

    同时,预览工具还有常见的图片标注功能,可以简单拼接、叠放图片,这貌似简单的特性,实则打开了全新的窗口——自定义图片标注。我曾编写过一个轻量级标注工具,原理很简单,无非实现准备一些个性化的标注素材,再叠放在图片上,随后调整一下位置、拉伸一下尺寸、旋转一下角度,就实现了那些时髦标注工具中的大部分功能。类似的事情在 Shortcuts 中也可以完成。

    # 小结

    从文本编辑器、浏览器、轻代码编辑器、Shortcuts、Automator、Keyboard Maestro 到预览工具,本文尝试勾勒了一个 macOS 下的日常工具包,描摹了一种相对容易打造的通用生产环境,而这些简单的工具——只有 Keyboard Maestro 需要付费——足以完成相当一部分任务。
    `

  2. 一键对比两个 Word 文档(附自动化) #暂未实际测试,因为我基本没有此类工作和生活场景
    https://utgd.net/article/20694
    `
    人脑不善于机械的对比,也只有在找茬游戏中,这种大量消耗脑力而仍然漏洞百出的工作才会有一点点的吸引力。

    不少文档编辑器也意识到这一点,并提供了文档比较功能——著名的 Microsoft Word 当然不会落下。可不幸,或许是 Word 的产品经理日理万机,实在顾不着那么细碎的小功能,竟把它塞在菜单栏的冷宫深处,还调用了 macOS 恶名传千里的文件选择窗口,为了简单对比两份文件,恐怕找一台 27 寸外接显示器都塞不下一连串的窗口和弹窗。

    相比之下,BBEdit 等硬核的文本编辑器就往系统右键上下文菜单中塞了对比功能,选好文件后只需点一次,非常轻松。可惜我从事法律工作,常常需要对比新发布的法律规定或者修改前后的合同,而客户发来的几乎都是 Word 文档1,BBEdit 并不对口,遂苦对比功能久矣。

    所幸有过之前折腾段落样式和文字格式的经验,我再次挖掘了早期 Word 留下的 AppleScript 遗产,并制作了自动化动作,以在 Finder 中选定文件、一键对比,跳过上述所有恼人步骤。
    `

回复 hi 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注