自动操作
自动操作文件分类
使用 mac 自带的app /Application/Automator.app
(自动操作), 可以创建自动工作流.
用此app新建文件, 会创建到 /Users/<username>/Library/Services/
目录, 创建文件格式有好几种, 如下图所.
以下简要介绍其中的一些文件格式及其用法:
工作流程
默认图标为
在访达张扩展名为 .workflow, 用 Automator.app 上打开 显示的扩展名 也是 .workflow.
无法绑定快捷键, 无法在右键菜单中出现出现
应用程序
扩展名为 .app, 默认图标为
无法绑定快捷键, 无法在右键菜单中出现出现
有以下即用用法:
设为开机自启app
设为开文件的默认app
快速操作
"快速操作” 又名 ”服务”, 默认图标为, 也可在Automator.app中自选图标.
"快速操作"在访达中文件扩展名为 .workflow, 而"工作流程”也显示为 .workflow.
用 Automator.app 打开后, “快速操作"会显示为”.workflow (快速操作)”, 而"工作流程”显示为”.workflow”, 这二者不同.
有以下即用用法: 以下用法仅对 /Users/<username>/Library/Services/
中的"快速操作”有效.
绑定快捷键
所有服务, 都会出现在"系统偏好设置-键盘-快捷键-服务” 中, 如下图所示.
右键菜单-快速操作
若一个服务 是位于访达.app的, 不论是否在"系统偏好设置-键盘-快捷键-服务”菜单中被勾选, 都会在"系统偏好设置-扩展-访达”里出现.
若在此菜单中勾选此服务, 则在访达的"右键菜单-快速操作”看见它
右键菜单-服务
若一个服务, 是位于访达.app的, 在"系统偏好设置-键盘-快捷键-服务”菜单中被勾选, 不论是否绑定了快捷键, 则在访达的"右键菜单-服务"也会出现它
授权原理
授权的原理
mac的automator运行内核, 从用如下授权的原则:
app A (-> 快速操作) -> app B
若当前某app A, 触发一个快速操作, 它令app B (B≠A) 去执行某个需要授权的操作,
或者用Automator写的一个 app A, 直接令令app B (B≠A) 去执行某个需要授权的操作,
需要授权的操作例如按按键/关闭窗口/退出app,
则需要把app A添加到”安全性与隐私-辅助功能”, 并在"”安全性与隐私-自动化”中允许app A控制app B. 具体步骤如下:
”安全性与隐私-辅助功能”
若App A, 或中介的快速操作的代码里, 用到了"System Events”, 则必须把App A添加到”安全性与隐私-辅助功能”
注: System Events.app 是app A令app B执行快捷键的中介应用.
否则会有如下报错:
”安全性与隐私-自动化”
在把App A添加到”安全性与隐私-辅助功能”后, 首次允许时, 会弹出弹窗, 要求用户授权app A控制app B:
若授权, 则之后再次执行此workflow, 无需再次授权, 且在”系统偏好设置-安全性与隐私-自动化”中, 会看见
若未授权, 则会如下报错, 解决方法是在上图的”系统偏好设置-安全性与隐私-自动化”中, 允许app A控制app B.
全局授权
根据上述的授权原理可知, 如果写一个快速操作, 要授权一切app A, 去经由此快捷操作xxx.workflow, 令某个app B执行特定的操作, 则需要对每个app A 去一一授权, 十分麻烦.
解决办法是:
step 1: 转换为应用程序
将此快速操作用automator.app打开, 点文件-转换为
, 选”应用程序”, 然后在自动新建的副本中, 按⌘S
, 钻则保存为”应用程序”, 得到xxx.app.
然后对xxx.app授权:
”安全性与隐私-辅助功能”:
若xxx.app的代码里, 用到了"System Events”, 则必须把xxx.app添加到”安全性与隐私-辅助功能”
修改 xxx.app
后重添加 xxx.app
每当修改 xxx.app
后, 必需从上图中选中 xxx.app
点-
删掉, 再点+
重新加上 xxx.app
. 不然在”辅助功能”与”自动化”中的 xxx.app
是旧的 xxx.app
, 新的 xxx.app
无法得到此二者授权, 运行时会分别报此二者所致的错.
”安全性与隐私-自动化”
在finder里, 双击xxx.app, 初次运行它, 在弹出授权窗口(例如下)时点”好”:
则在”系统偏好设置-安全性与隐私-自动化”里会看见xxx.app对B.app有了权限
step 2: 另写一个快速操作
另写一个 xxx.workflow (快速操作), 其内容如下, 仅调用xxx.app. 这样, 则可以在将 xxx.workflow (快速操作) 绑定快捷键, 并添加到右键菜单, 具体做法详见上文.