Drafts 是我在移动设备上的草稿处理中心,我习惯先在 Drafts 里写完东西,再发送到其他 App 里。在研究添加任务的快捷方法时,我发现可以利用 Drafts 的 Prompt 步骤,向 OmniFocus 里添加任务时附上项目、旗标等信息:
效果类似 Workflow 和 Launch Center Pro 的列表选单,但是在 Drafts 里打字更舒服,如果你也喜欢简洁的输入体验,不妨试一试我这个动作。
这个 Drafts 动作有五个步骤,用到了两个 Prompt(提示框)、两段 JavaScript 脚本和一条添加任务的 URL Schemes。分开来看的话其实不复杂,你也可以直接把项目、旗标修改为自己想要的内容,应用到自己的任务管理中。
五个步骤顺序不能打乱,它们像一条流水线下来完成一项任务的添加:
选择或新建一个项目:
把上一步变成 [[项目名]] 标签;
选择是否打旗标;
把上一步结构变成 [[旗标]] 标签;
获得草稿标题、正文和刚才的新建标签,作为内容添加进 OmniFocus。
我们就来看看这个 Drafts 动作具体是怎么工作的。
制作 Prompt
我们先以第一步为例。Drafts 里的 Prompt 有两个作用:按钮和输入,刚好可以满足我「选项目」和「新建项目」的两个需求。下面是具体设置和最终效果的图示:
按照图片的标注,为 Prompt 添加标题(1)、增加输入框(2),建立一系列代表项目的按钮(4)并设置一个取消选项(3)。别忘了标题上方的 key 也要填,这就是 Prompt 的身份证号码,由于我们要建立两个 Prompt,就需要用 key 把它们区分开来。
第四步(选择旗标状态)的 Prompt 就简单许多,不需要输入框,有「是/否」两个按钮就足够。
衔接 Prompt 和 URL Schemes
多数读者已经对 URL Scheme 有了一点了解,那么,如何把 Prompt 里按下的按钮或输入的内容转变成 URL Schemes 里的数据?我们需要用的一段 JavaScript 脚本,在 Prompt 和 URL Schemes 之间搭起一座传递「项目名」和「旗标」的桥梁。
以步骤二为例,我们可以分为四个部分来看这段脚本,它们的作用分别是:
获取按钮的值作为 项目名;
如果点了「新建」,就把输入的内容作为新的 项目名;
如果没有输入内容,也没有点按钮,就不输入 项目名;
创建一个 [[项目名]] 标签用在稍后的 URL Scheme 里,它的值就是 项目名。
有了这段脚本,就可以把 Prompt 里的数据传递下去了。如果你想添加上下文,也可以用类似的方法。
不过添加旗标的脚本稍稍有不同,因为最后的 URL Schemes 只能接受 true 或 false,但是 Prompt 里显示的是 是/否 这样更直观的文字,所以对应的脚本就有把 是/否 转为 true/false 的功能(粉色部分):
另外需要注意的是,由于在第三步里我们把旗标 prompt 的 key 设为了 prompt2(橙色部分),所以旗标的脚本中需要使用 prompt2。
添加进 OminiFocus
最后一步就是打开 URL,我们通过这一步来完成任务的添加。关于 OmniFocus 的 URL Schemes,@Hum 已经写有颇为详尽的文章,我直接借来里面的 URL Schemes 一用: omnifocus://x-callback-url/add?name=任务名¬e=备注&estimate=延续时间&autocomplete=true&completed=预设完成日期&repeat-method=重复形式&repeat-rule=重复规则¶llel=true&flag=true&defer=推迟到…&due=何时到期&project=项目名&context=上下文&attachment-name=附件名&attachment=附件文件
完整的 URL Schemes 很长,实际使用中我只选了最常用的任务名、备注、项目和旗标。我填在最后一步里的内容如下:
里面的 [[项目名]] 和 [[旗标]] 就来自前面两段 JavaScript,这里可以直接拿来用,获取到对应项目名和旗标状态;而 [[title]] 和 [[body]] 都是 Drafts 自带的标签,分别可以获取草稿的第一行和剩余部分。 保存好之后运行一下,不出意外就可以达到文章开头的效果:
现在添加任务就更舒服了。
小结
面对 Prompt 貌似复杂的用法,想必会有人问我为什么不用相对简单的 [[line]] 标签一口气往 OmniFocus 里输入任务的所有信息?其实原因很简单,Prompt 的预设按钮是最常用的那些项目和上下文,没有必要每次都手动输入。
在实际使用中,我还会用 Prompt 来选择 DropBox 存储位置代替输入复杂而冗长的路径,或者通过 Prompt 挑一个 Copied 列表来存储草稿。
你可以在这里下载我的动作(需要在 iOS 设备上打开)。