这是「流程和效率」系列之二
本文结构:
- 创建第一个 Workflow
- #1 定个小目标
- #2 确定核心步骤
- #3 用「Choose from Menu」显示选单
- #4 用「List」显示选单
- Workflow 进阶
- #1 聚合搜索引擎
- #2 货币换算
创建第一个 Workflow
#1 定个小目标
要从简单、已有经验的任务做起,那就还选支付宝快速跳转。我们已经了解支付宝的 URL Schemes:
- <alipayqr://platformapi/startapp?saId=10000007> 启动支付宝并立即跳到「扫码」;
- <alipayqr://platformapi/startapp?saId=20000032> 启动支付宝并立即跳到「余额宝」;
- <alipayqr://platformapi/startapp?saId=20000056> 启动支付宝并立即跳到「付款码」;
- <alipayqr://platformapi/startapp?saId=20000123> 启动支付宝并立即跳到「收款」。
#2 确定核心步骤
新建一个 Workflow,把名称、图标和类型设置好,然后整理思路,准备添加动作。
要跳转到不同功能,URL 的区别就是末尾的那串数字。所以 Workflow 的核心步骤就是建立一个选单,运行时根据选择将不同的数字填到 URL 中去。
LCP 可以用「List」来显示选单,我们回顾一下它的代码:
[list:常用功能|扫码=10000007|余额宝=20000032|付款码=20000056|收款=20000123]
翻看 Workflow App 的动作列表,可以看到在 Scripting 分类下有「Menu」「List」两个词跟选单相关,具体动作如下:
- Choose from Menu
- List
- Choose from List
- Choose Item from List
#3 用「Choose from Menu」显示选单
先试试「Choose from Menu」,把它拖放到 Workflow 里,然后添加上述菜单项:
你会发现每添加一个菜单项,下面就会自动出现对应的分支。这时可以再继续把动作拖到不同的分支里。
显然,用「Choose from Menu」可以实现我们的「小目标」,但它显得繁琐,每个分支下都是重复的动作,需要我们反复往里面拖。
#4 用「List」显示选单
用「List」相关动作会不会更简单一些呢?把「List」拖进去,发现下方并没有像「Choose from Menu」那样出现分支。
而「Choose from List」和「Choose Item from List」的区别又是什么呢?
Workflow 提供了「View Content Graph」和「Quick Look」两个动作,为我们测试提供了方便。「View Content Graph」直译过来是「查看内容图表」,「Quick Look」是「瞥一眼」。
我们可以临时建一个 Workflow,选一个联系人看看它们展示什么:
原来「View Content Graph」用于观察数据类型的结构,即一种数据里包含着哪些类型的数据,而「Quick Look」则会简单地展现数据。
删掉临时 Workflow,分别试着把「Quick Look」添加到「Choose from List」和「Choose Item from List」之后,看看是什么运行效果?
通过试验得出两个结论:
- List 后跟 Choose from List 会显示选单,后跟 Choose Item from List 则不会;Choose Item from List 多数用于不需干预的固定选择。
- List 向后传递选项内容,Choose from List 支持多选。
不像「Menu」的菜单项仅供显示,在「List」中选择的项目是后面用到的数据。因此力求简洁的话,支付宝的快速功能选单应该用 URL 结尾那串数字:
只是这样的话,用的时候谁记得这串数字代表什么鬼?
LCP 用扫码=10000007
的形式,等号前的内容用来显示选单,等号后的内容用来加入 URL,在 Workflow App 里类似的动作应该是「Dictionary」。因此,这个 Workflow 最简洁的做法是:
Workflow 进阶
Workflow 是一种用流程来解决问题的思维模式。在成功创作第一个作品之后,相信你对此已有初步体会。
不过,支付宝的这个 Workflow 只是 URL 调用,它并未体现出和 LCP 的根本区别。所以在进阶部分,我们通过「分享面板扩展」类 Workflow 和 Scripting 类动作弄清楚这种区别。
#1 聚合搜索引擎
在本文第一部分我贴过搜索聚合功能的截图,其关键步骤和上面支付宝的 Workflow 完全一致,现在就从它开始。
-
确定核心步骤
我们试着用不同的搜索引擎来搜索关键词,最终得知它们的 URL 格式如下:
- Bing(必应)https://cn.bing.com/search?q=
关键词
- Google(谷歌)https://www.google.com/search?q=
关键词
- 百度(bǎi dù)https://www.baidu.com/s?wd=
关键词
借此我们可以先把 Workflow 的核心动作先添加好。这里重贴前文截图供参考:
你可能会留意到,我没有打开「Choose from List」中的「Select Multiple(多选)」开关,而是在「Dictionary」中添加了一个子级词典,因为打开多选开关之后,每次运行 Workflow 都要勾选引擎再点确定,操作上多了一个步骤。
- Bing(必应)https://cn.bing.com/search?q=
-
添加条件判断
一个聚合搜索引擎的 Workflow 必须接受数据输入(要搜索的内容),而不像调用支付宝那样,只需预设 URL 的不同分支。
它最好是「分享面板扩展」类 Workflow,那样我们就可以在大部分 App 里选中文字即时调用,同时还可以在通知中心运行,让用户手动输入要搜索的内容。
将 Workflow 的类型选为「分享面板扩展」和「通知中心插件」,接受的数据类型只选择「Text」。
在选择类型之后,类型选项会在 Workflow 的编辑界面消失,要再次修改,需要点齿轮图标进入设置界面。
如上所述,Workflow 需要判断是否有通过分享面板传递的数据,这时就需要用到「Count」和「If」两个动作。
点「Count」动作的图标查看其说明,可知它用于统计项目、字符、单词、句子、段落的数量,我们可以用它和「If」组合,判断运行时是否选择了内容。
因为「Count」动作向后传递的是数值,而不再是“可能存在”的文字内容,所以在运行它之前,要先用「Set Variable」动作把“可能存在”的文字内容赋值给一个变量。
我们用「Count」统计输入的项目,项目数量为 0 时表示没有数据输入(在分享面板中调用时并未选择文字,或者是在通知中心运行),这时要求输入搜索关键词。
这一段 Workflow 见下图:
用「Ask for Input」提示输入的时候,建议将剪贴板的内容设为默认答案,这样就可以应对某些 App 不兼容分享面板的情况。遇到这样的 App 你只需多做一步:在选中文字之后点一下「复制」。
经过 If 的判断,Workflow 确定无疑获得了要搜索的内容,接上先前构建的核心步骤,Workflow 就算基本完成了。
-
查漏补缺
在认为 Workflow 已经完成之后最好继续做一遍检查,看看是否有错误、逻辑漏洞等等。比如上面的 Workflow 就还有有两个问题需要留意:
❶ 注意对网址进行编码。有些符号是网址格式的保留符号(比如
/
),如果我们选中、复制或手动输入的文字中含有这样的符号,就会导致搜索结果出乎意料。为了防止这种意外,最好在「Set Variable」之前先使用「URL Encode」动作。❷ 检查「Dictionary」 的项目。在将搜索引擎及网址添加进词典的时候,URL 的等号后面要接上前面赋值的变量,否则又是「Count」又是「If」的闹了半天,Workflow 总是只打开搜索引擎,而不搜索任何内容。
#2 货币换算
在创建第一个 Workflow 的环节,你一不小心就完成了一个小目标,于是变得极端有钱,海淘的需求极大,这时候你少不了要装一个货币换算 App。
在商店众多优秀的货币换算 App 中我推荐 Vert,它除了支持货币换算,还支持长度、面积、体积、重量、温度、速度……(类别多得让人头皮发麻)的单位转换。如此全面的单位换算工具,不光能给人海淘的快感,还能给人辅导孩子功课的底气。
上帝是公正的,如果一个人的发球姿势过于优美,他老人家就往往不让球过网。Vert 也逃不脱这个规律:它强大,于是操作上就略显繁琐。
作者也知道这十分影响海淘心流,为了将功赎罪,他交出了 URL Schemes:
vertconverter://open?category=
currency
&from=cny
&to=usd
&value=数值
我们同样可以借助这个 URL Schemes 做一个 Workflow,以便在浏览器或其他购物 App 中调用。
这个 Workflow 的步骤与上面聚合搜索的几乎一致,不过 URL 中有多个参数,分别引申出不同的步骤:
-
Category
做货币换算,类别固定用
currency
即可,不需要运行时选择,但这里暗藏一个小问题。Vert 是多国语言版,支持在设置中更换界面语言。也许是由于 Vert 的语言文件翻译过度,导致它切换到不同语言界面之后,
currency
也要相应改变。在使用 Vert 的中文界面时,「category」后面应填货币
。 -
Currency Unit
from
和to
的值都是货币缩写,我们可以使用同一个词典。 -
Value
和上面的搜索关键词一样,
value
的数值通过选取、复制或手动输入获得。不过,如果一不小心给它选择或复制了字母、汉字或者标点符号,Vert 就会很为难,毕竟它不了解 1,000 字 100 块的稿酬标准。在 Workflow 中使用「Number」动作可以判断输入内容是不是数字。
题图来自 Unsplash,作者 Daniel McCulloughl