惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
人人都是产品经理
人人都是产品经理
T
Troy Hunt's Blog
H
Hacker News: Front Page
N
News and Events Feed by Topic
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
PCI Perspectives
PCI Perspectives
有赞技术团队
有赞技术团队
Google Online Security Blog
Google Online Security Blog
博客园 - 【当耐特】
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
博客园 - Franky
T
The Blog of Author Tim Ferriss
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
I
Intezer
Microsoft Security Blog
Microsoft Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
L
Lohrmann on Cybersecurity
T
Threat Research - Cisco Blogs
U
Unit 42
Forbes - Security
Forbes - Security
MyScale Blog
MyScale Blog
J
Java Code Geeks
S
Secure Thoughts
G
Google Developers Blog
SecWiki News
SecWiki News
T
Tailwind CSS Blog
T
Tor Project blog
P
Proofpoint News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy International News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
美团技术团队
T
Threatpost
小众软件
小众软件
W
WeLiveSecurity

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
Omni Automation 的出现,让 iOS 版 OmniFocus 和 Mac 版一样强大 - 少数派
2020-06-25 · via 少数派

注:视频内提到的脚本和代码,在文章中附有相关连接。此外,文章的内容相比视频更完整丰富。


和 Mac 平台的 AppleScript 相比,无论是通过 URL Scheme 或是快捷指令,OmniFocus for iOS 上的自动化始终显得不那么 「Pro」,让 power user 感觉有些隔靴搔痒。

终于,在上架一年半之后,OmniFocus 3.8 推出了基于 JavaScript 的自动化脚本 —— Omni Automation。第一次,OmniFocus for iOS 将拥有和 Mac 版一样的深度定制可能性。

关于应用脚本和 Omni Automation 可以聊的话题非常多,这次我们将专注于最基本也最重要的两点:

  1. 怎么在 macOS 和 iOS 上使用 Omni Automation 脚本?
  2. 相比 AppleScript、快捷指令和 URL Scheme,Omni Automation 有无过人之处?值不值得花时间深入研究?

每一种应用脚本都有特定的使用方式:快捷指令是以功能模块为基本单位进行组合,在快捷指令应用中使用;URL Scheme 是将应用提供的接口编写成一条 URL ,然后在可以执行 URL Scheme 的应用(例如 Launch Center Pro)中启动;而 AppleScript 则是需要编写独立的脚本文件。

每种方式都有它的应用场景和局限,而 Omni Automation 则是「通吃」了这三种使用方式。它既可以像 AppleScript 一样,以脚本文件的形式使用;也可以像 URL Scheme 一样,以「Omni Automation URL」的形式,插入 AppleScript 甚至 HTML 中。由于 Omni Automation 其实就是 JavaScript 代码,于是也可以在 Automator 中,调用相关模块,借此运行 Omni Automation。

以脚本文件的形式使用

无论是 macOS 还是 iOS 上,将 OmniFocus 升级到 3.8 版本(专业版)后,就会发现独立的 Omni Automation 入口。

macOS & iOS 上的 Automation 菜单

在 Mac 版的 Automation 窗口中点击 +,就能创建新的脚本文件。不过更节省时间的办法,是根据自己的需求,从网上直接下载脚本文件,例如 OmniFocus 官方网站上,就提供了 50 多个脚本。

在官网下载脚本文件并解压缩后,可能会发现存在两种文件类型,后缀名分别是.omnijs(例如 Create Packing List for Trip 脚本)和 .omnifocusjs (例如 Plug-In Template 脚本)。

macOS 上的安装

不论 .omnijs 还是 .omnifocusjs 文件,安装方式是一样的。在 macOS 中,右键点击文件,选择「打开方式」为 OmniFocus;在 iOS 中,长按文件后会弹出菜单,选择「共享 - 在 “OmniFocus” 中打开」。

iOS 上的安装

打开文件后会弹出安装窗口,此时要注意选择脚本的存储位置。因为 Omni Automation 是可以同时运行在两个平台上,所以这里建议选择「OmniFocus in iCloud Drive」作为存储位置,以后任何脚本只用安装一次,就可以无缝同步。选择好存储位置后点击「Install Plug-In」,就完成了脚本的安装。

macOS 上运行脚本

Omni Automation 的使用非常简单。安装好的脚本,都会显示在 Omni Automation 窗口中,直接点击就可以执行,在 iOS 上还有专门运行的快捷窗口。

既然安装与使用方式一模一样,那么.omnijs 和 .omnifocusjs 这两种文件有什么不同呢?

在 官方文档中,将 .omnijs 称为 Plug-In,而 .omnifocusjs 则称为 Bundle Plug-In。其实简单地说,前者是一个文件对应一个 Omni Automation 脚本,后者就是多个脚本的集合。 Bundle Plug-In 会在 Omni Automation 窗口多一个层级,以供用户选择不同的脚本。

从文件属性上看, Bundle Plug-In 其实是一系列文件的组合,其中可以放入图片文件,作为脚本的图标,可以放入多个脚本文件。如果你使用 Plug-In 编写一个复杂的脚本, 只能将所有的代码放在一个文件中,从编程的角度来说是不推荐这么做的。而使用 Bundle Plug-In 的话,则可以将不同功能的代码拆分到不同的文件中,方便日后进行代码重构。

删除脚本文件

想要删除脚本文件,也非常简单。在 iOS 中的 Omni Automation 窗口中左划即可选择删除。或者直接在 iCloud 的 OmniFocus 文件夹中,删掉脚本文件即可。

以 Omni Automation URL 的形式使用

注:下文需要一定的 URL Scheme 基础知识,如果你对 URL Scheme 尚不了解,可以先阅读的《入门 iOS 自动化:读懂 URL Schemes》。

通过脚本文件,可以在 iOS 或者 macOS 版的 OmniFocus 中非常方便地管理、运行 Omni Automation,但是这一切都必须在 OmniFocus 应用中进行。有没有什么办法,在运行其他应用时,也能使用 Omni Automation 呢?

想实现「在一个应用调用外部应用的功能」的效果,在 iOS & macOS 平台上自然会想到 URL Scheme。实际上OmniFocus 的开发者也是这么想的,将 Omni Automation 的脚本代码写成 URL Scheme 格式,就变成了 Omni Automation URL。Omni Automation URL 可以在其他应用中启动,实现打开 OmniFocus 并运行脚本的效果。

以下面这行简单的脚本为例:

task = new Task("My Task")

官方网站上,提供了专门将脚本源代码翻译成 Omni Automation URL 的工具,将这行代码粘贴进窗口,选择「Encode Script」,就能得到相应的 Omni Automation URL。

Encode Script

使用 Omni Automation URL 的方式则和 URL Scheme 是一样的。 以 iOS 上的 Launch Center Pro 为例,创建新动作,将翻译好的脚本像普通 URL Scheme 一样写进「URL」一栏中即可。点击尝试运行,就能看到 OmniFocus 已启动,并询问是否执行脚本。

在 Launch Center Pro 中运行

看到这里可能会有些疑惑:OmniFocus 本来就是支持 URL Scheme 的,为什么要发明 Omni Automation URL 这个新概念呢?

我们回头仔细看一下刚才的 Omni Automation URL:

omnifocus://localhost/omnijs-run?script=task%20%3D%20new%20Task%28%22My%20Task%22%29

对照 OmniFocus 给出的 URL Scheme 官方文档,会发现 localhostomnijs-run 动作以及 script 参数都没有在文档中提到过。 同时观察 Omni Automation URL 的运行过程,点击运行 URL Scheme 后,一般会直接完成动作,而 Omni Automation URL 则停在了询问窗口。由此我们不难推理出:Omni Automation URL 是一条特殊的 URL Scheme,它的作用是向 OmniFocus 传递一段 Omni Automation 脚本,并申请执行。

和标准的 URL Scheme 相比,Omni Automation URL 不受文档中参数类型的限制,可以完全使用属于 Omni Automation 的 API,这无疑使得 Omni Automation URL 功能更加强大。

以源代码的形式使用

注:阅读这节需要一定 JavaScript 基础,如果发现阅读起来有些困难可以先跳过。

如果你理解了 Omni Automation URL,就会意识到它几乎完美地实现了「从外部应用运行 Omni Automation 的需求」。唯一的缺憾在于:一条 Omni Automation URL 的内容是提前编写好的,在应用中运行时无法修改。这又该如何解决呢?

回想一下编写 Omni Automation URL 的过程,我们先是写好代码,然后进行了一次编码,从而生成一条 Omni Automation URL。如果我们能在代码中留出空位,运行时填写需要的内容,然后再编码,就可以实现动态修改 Omni Automation URL 的目的。

而且由于 Omni Automation 使用的是标准的 JavaScript 语法,所以在任何支持运行 JavaScript 的应用中,我们都可以使用 Omni Automation。我们就以 macOS 上的 Drafts 为例来演示。

在 Drafts 中运行

在 Drafts 中创建一个新动作,加入「Script」步骤以运行 JavaScript。然后将这段代码粘贴进去:

(() => {
	// 定义动作
	function addNewTask(stringsArray){
		task = new Task(stringsArray)
	};

	// 读取 Drafts 当前文本
	const stringsArray = editor.getText();
	
	// 运行 Omni Automation URL
	app.openURL(
		'omnifocus://localhost/omnijs-run?script=' +
		encodeURIComponent(
			'(' + addNewTask + ')' +
			'(' + JSON.stringify(stringsArray) + ')'
		)
	);
})();

这段代码分为三部分。第一部分定义了函数 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 是无法实现的。

用脚本调用对话框

所以相较于 AppleScript 和 URL Scheme,Omni Automation 同时做到了「跨 macOS/iOS 平台运行」与「代码级脚本」两点,让它可以兼备强大的功能和通用性。

其次值得注意的是,Omni Automation 的出现使得 OmniFocus 与其他自动化应用的交互变得更加方便。正如上文展示过的,OmniFocus Automation URL 可以任意插入其他应用中,例如 Drafts、Automator、快捷指令等。并且借着 JavaScript 的风行,OmniFocus Automation 可以以源代码的形式和其他应用结合起来使用,这一点哪怕是 AppleScript 也做不到。

作为代码级的脚本,「在 Omni Automation 中调用其他应用」的需求也可以很方便地实现,例如 Launch Chosen Shortcut 脚本就可以在 OmniFocus 选择预设好的快捷指令并运行。上文展示过从 Drafts 中调用 OmniFocus,其实反过来,通过 Omni Automation 从 OmniFocus 也可以抓取信息放进 Drafts。

可以说,Omni Automation 是非常值得我们花时间去深入研究。虽然相较于 URL Scheme 和快捷指令它的入门门槛更高,但是它能实现的功能会比两者丰富得多,相比同样功能强大的 AppleScript,它的应用场景又更加丰富。

要明白的是,学习 Omni Automation 就等于在学 JavaScript。可以看得出来,JavaScript 正在逐渐取代 AppleScript 的作用,成为专业用户的选择。一方面这是得益于 JavaScript 语言本身的风行,另一方面苹果也对 JavaScript 提供了技术支持。无论是 Omni Automation、Drafts 还是 JSBox,底层其实都是依赖苹果 JavaScriptCore 官方库。可以想象,会有越来越多的应用借助 JavaScriptCore 实现自动化,所以学习 Omni Automation 的经验,以后也可以应用于其他应用中。

从技术上看 Omni Automation 无疑是潜力巨大的,回到使用者角度,我们有必要去学习它吗?

不可否认的是,快捷指令这种图形化的自动化工具,还是会成为更主流的选择。它相较于 Omni Automation 的优势不言自明:平滑的学习曲线,官方加持下的开发力度,与其他应用的高度结合。也难怪苹果官方要收购它,使其成为第一方应用。但是回看 AppleScript 与 OmniFocus 的过往,可以预见围绕 Omni Automation 将形成一个「少数专业用户编写脚本,普通用户使用脚本」的社区。即使你没有兴趣编写 Omni Automation,学会使用和简单地修改脚本,就能让你赚回购买 OminFocus 专业版的钱。

> 订阅 OmniFocus 使用指南,教你搭建一套属于自己的任务管理系统 ⚙️

> 下载少数派 客户端、关注 少数派公众号,获取更多数码资讯 📱

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺 🛒