这段代码分为三部分。第一部分定义了函数 addNewTask ,可以看到,其中的语句完全与 Omni Automation 脚本中一样。这个函数与接受一个文本 stringsArray ,并以它为标题,在 OmniFocus 中创建一个新动作。第二部分则是在读取 Drafts 中当前的文本内容。第三部分则是将前两部分结合起来,再编码成 Omni Automation URL。
现在你就可以先在 Drafts 中写下动作的名字,再运行这个动作,就会看到像运行 Omni Automation URL 一样,在 OmniFocus 打开脚本窗口,然后创建一个新动作。
这个例子虽然简单,但已经完全实现了我们的需求。相比直接运行编码好的 Omni Automation URL,使用源代码运行 Omni Automation 无疑会更加灵活。不仅是 Drafts,其他应用(例如 macOS 上的 Automator),只要能运行 Javascript 脚本,就能将 Omni Automation 与之结合起来使用。
Omni Automation 值得我们花时间去学习吗?
作为老牌的 macOS/iOS 开发商,OmniFocus 在自动化脚本上非常完善。OmniFocus for Mac 支持 AppleScript,OmniFocus for iOS 上有 URL Scheme,在快捷指令应用中也支持不少动作。那为什么这次又要推出 Omni Automation 呢?
Omni Automation 最重要的特性,当然是跨 macOS/iOS 平台运行代码级脚本。AppleScript 是非常强大的脚本语言,几乎可以实现对 OmniFocus 任何精细操作,不过只能运行在 macOS 平台上,同时因为这个原因,它的推广度也一直不温不火。URL Scheme 其实也是可以同时运行在 macOS/iOS 平台的,但是受到它本身设计的限制,在功能丰富度上远远不及 AppleScript 和 Omni Automation。例如 Packing List Plug-In 脚本可以调用一个对话框,让用户选择日期,这样的功能 URL Scheme 是无法实现的。