用Drafts快速调用Workflow

一开始有这个需求是在安排复习计划时感到每次打开2Do添加任务时,点来点去特别麻烦,因此想通过Drafts的快速输入来代替手动点击添加任务。由于Drafts的JavaScript语法我不是很熟悉,就随手做了一个Workflow,通过Drafts调用来增强2Do的添加(我不喜欢在Workflow里面输入,那个输入框让人很不舒服)。后来我发现用Drafts启动Workflow比原来打开Workflow去找一条特定的wf然后运行要快得多,因此就有了用Drafts调用Workflow的想法。
这个想法建立于一个基础之上:Workflow在1.71的版本以后可以在一个Workflow中引用另一个Workflow,这样每个Workflow都可以做成模块的形式,像Python中调用函数那样来使用。这样只需要写一个总的Workflow来识别Drafts传过来的命令,然后启动对应的Workflow就好了。
更正:v1.71只是支持了直接调用Wf,1.71以前的版本可以用urlschemes进行调用的。感谢@mrdot指正。
对于Drafts的Action的设置很简单,只需要把当前Drafts的主体传送给Workflow就行;Workflow需要设置为Action Extension,只接收Text。这样一来整个流程就完成了我的需求。
不过Workflow的命名一般不会很简短,但对于我这个流程所追求的效率,输入那么长的名字显然不合理。所以在这个Wf中,我增加了一个Dictionary,Key为应该输入的指令,Value存放对应Workflow的名字。运行后将输入的命令与存放的命令集比对,如果找到符合的,就运行该指令对应的Workflow,使用者就只要按需求自定义好命令集,就可以使用。
目前我只做了快速添加2Do这一个Wf作为子命令。
命令格式为:
td
可选参数:
-tit
标题
-tag
标签(多个使用半角逗号隔开)
-list
添加的列表
使用者也可以自行添加参数。另外这个动作也支持直接被Drafts调用,如果传入的内容不包含_td
命令,就会逐行添加任务。我之所以没有把逐行添加直接写到指令里是因为那样写起来太麻烦了,有兴趣的人可以自己改写我的Workflow。
使用效果

点击安装Drafts Action
点击安装Command Workflow
点击安装2Do Workflow