【101】17周 从 OmniFocus 认识 Drafts 的 Prompt 用法

Minja
2017年12月19日

从 OmniFocus 认识 Drafts 的 Prompt 用法

| 本文为付费栏目文章,您已订阅,可阅读全文 |
Drafts 是我在移动设备上的草稿处理中心,我习惯先在 Drafts 里写完东西,再发送到其他 App 里。在研究添加任务的快捷方法时,我发现可以利用 Drafts 的 Prompt 步骤,向 OmniFocus 里添加任务时附上项目、旗标等信息:


效果类似 Workflow 和 Launch Center Pro 的列表选单,但是在 Drafts 里打字更舒服,如果你也喜欢简洁的输入体验,不妨试一试我这个动作。
这个 Drafts 动作有五个步骤,用到了两个 Prompt(提示框)、两段 JavaScript 脚本和一条添加任务的 URL Schemes。分开来看的话其实不复杂,你也可以直接把项目、旗标修改为自己想要的内容,应用到自己的任务管理中。


五个步骤顺序不能打乱,它们像一条流水线下来完成一项任务的添加:
  1. 选择或新建一个项目:
  2. 把上一步变成 [[项目名]] 标签;
  3. 选择是否打旗标;
  4. 把上一步结构变成 [[旗标]] 标签;
  5. 获得草稿标题、正文和刚才的新建标签,作为内容添加进 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 之间搭起一座传递「项目名」和「旗标」的桥梁。


以步骤二为例,我们可以分为四个部分来看这段脚本,它们的作用分别是:
  1. 获取按钮的值作为 项目名
  2. 如果点了「新建」,就把输入的内容作为新的 项目名
  3. 如果没有输入内容,也没有点按钮,就不输入 项目名
  4. 创建一个 [[项目名]] 标签用在稍后的 URL Scheme 里,它的值就是 项目名
有了这段脚本,就可以把 Prompt 里的数据传递下去了。如果你想添加上下文,也可以用类似的方法。
不过添加旗标的脚本稍稍有不同,因为最后的 URL Schemes 只能接受 truefalse,但是 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 设备上打开)。

上一期
拓宽键盘和触控板功能的效率工具 | 我的自动化
下一期
无线充电底座选「卧式」还是「立式」?| 编辑部的新玩意
 
精选评论(2) 我的评论
  • evannoah
    是否可向Things 3 Prompt?
    2017年12月23日
  • Platycodon
    提一个建议:配图里的代码最好用 monospace 字体,看起来更方便一些;苹果免费提供的 SF Mono(系统字体 SF 的等宽变体)就很好。
    2017年12月21日