![](https://img.haomeiwen.com/i5926056/45ccb8eab67b99f5.jpeg)
这是「流程和效率」系列之七
本文结构:
- 初步构想
- 列出框架
- ㊀ 从「捷径」App 或通知中心启动
- ㊁ 从图文类 App 启动
- ㊂ 从浏览器的共享表单启动
- ㊃ 从地图类 App 的共享表单启动
- ㊄ 从通讯录的共享表单启动
- 总结
- 测试输入的数据类型
- 组装「捷径」
- 第 ㊀ 段 保存读取到的数据
- 第 ㊁ 段 分别处理不同类型的数据
- 第 ㊂ 段 构建 Due 提醒的标题
- 第 ㊃ 段 附加后续动作
- 第 ㊄ 段 拼接内容,添加提醒
- 补充说明
前文说到,Due 支持后续动作,可以插入电话号码、邮箱地址、网址(包括 URL Scheme)来节省很多后续操作。
但是,Due 并没有分享面板插件,除了电话号码,要插入其他几类后续动作,就得复制粘贴或者手动输入。
幸好 Due 自身支持用 URL Scheme 来调用,并得到了「捷径」(原 Workflow,见《初识 Workflow》)的内置支持。
Due 开发者文档:https://www.dueapp.com/developer.html
![](https://img.haomeiwen.com/i5926056/fdaa2a8ac2af971f.jpeg)
「捷径」支持通知中心和共享表单(分享面板)插件,其中分享面板插件能传递文字、网址、电话号码、邮件地址等各种数据,借此我们不仅可以尽量省掉复制粘贴和手动输入的麻烦,还可以在各种界面随时快速添加提醒。
初步构想
在动手制作「捷径」之前,我们首先想一下,它应该如何方便我们:
-
能通过通知中心添加提醒;
-
从图文类 App(阅读器、文档编辑器等)启动时,能读取选中的文字,作为提醒的标题;
-
从浏览器(Safari、Chrome 等)的共享表单启动时,能读取选中的文字和页面网址,分别作为提醒的标题和后续动作;
比如那是两个小时后开始秒杀的页面,就可以借助后续动作快速重新打开。
-
从地图类 App 的共享表单启动时,能读取位置链接,以便快速打开地图,开始导航。
-
从通讯录的共享表单启动时,能读取联系人电话号码、邮箱、主页和地址这 4 类信息。
列出框架
现在将上述 5 种情况的大概步骤列出来。
㊀ 从「捷径」App 或通知中心启动
- 读取剪贴板文字作为默认标题。
- 选择后续动作类型,分两种情况
- 选择联系人(读取电话号码、邮箱地址、主页或地址);
- 选择常用 App 的 URL Scheme。
㊁ 从图文类 App 启动
- 读取选中文字,若无则读取剪贴板文字,作为默认标题。
- 选择后续动作类型,分两种情况
- 选择联系人(读取电话号码、邮箱地址、主页或地址);
- 选择常用 App 的 URL Scheme。
㊂ 从浏览器的共享表单启动
- 读取选中文字,若无则读取剪贴板文字,作为默认标题。
- 读取网址(URL)作为后续动作。
㊃ 从地图类 App 的共享表单启动
- 读取剪贴板文字作为默认标题。
- 读取地址链接(URL)作为后续动作。
㊄ 从通讯录的共享表单启动
- 读取剪贴板文字作为默认标题。
- 后续动作分两种情况
- 仅存有联系人一项信息时直接附加;
- 存有联系人多项信息时弹出选单。
总结
-
要添加到 Due 提醒的内容分为两段,前一段是标题(可包括时间),后一段是用于后续操作的附加信息。
-
用变量
Info
存放「捷径」启动时读取到的数据,用变量SelText
来存放选中文字,用变量Due-action
来存放用于后续操作的附加信息。- 从图文类 App 启动时顶多只有选中文字,所以
SelText
=Info
; - 从浏览器的共享表单启动时,
SelText
= 页面选中文字,Due-action
= 页面 URL; - 从地图类 App、通讯录的共享表单启动时,
Due-action
=Info
。
- 从图文类 App 启动时顶多只有选中文字,所以
-
处理标题段。
上述五种情况不管哪一种,都应弹出对话框,要求用户输入提醒标题。在有选中文字的情况下多花费了一次点击,但同时也提供了修改的余地。
- 在有
SelText
的时候,用SelText
作为对话框默认文字; - 没有
SelText
的时候,用剪贴板文本作为对话框默认文字。
- 在有
-
处理附加段。
分三种情况:
- 从「捷径」App、通知中心或图文类 App 启动时,附加信息为空,此时可以选择联系人信息或常用 App 的 URL Scheme。
- 从浏览器、地图类 App 的共享表单启动时,获得单项附加信息(页面 URL、地图 URL)。
- 从通讯录的共享表单启动时,需要判断联系人信息项数(包括电话号码、邮箱、主页、地址),若是多项则需从中选择单项。
测试输入的数据类型
上述五种情况,输入的数据类型有区别,所以我们先简单做一个测试「捷径」。
![](https://img.haomeiwen.com/i5926056/1be88a45b749006c.jpeg)
从图文类 App 启动,获得的类型是文本,这没什么疑问,所以我们只试着从浏览器、地图和通讯录启动测试「捷径」。
![](https://img.haomeiwen.com/i5926056/a1791f4a61bb0dcd.gif)
从 Safari 启动测试「捷径」,得到的类型是 Safari 浏览器网页。
![](https://img.haomeiwen.com/i5926056/970a7ebb580a5cd2.gif)
从自带的地图 App 启动测试「捷径」,得到的类型是文本、vCard 和 URL。在这个「捷径」里,我们只需要获得 URL 这一项。
![](https://img.haomeiwen.com/i5926056/d6f79fa242b6dfff.gif)
从通讯录启动测试「捷径」,得到的类型是 vCard。
组装「捷径」
修改测试「捷径」,或者新建一个,开始着手组装。
建议选择新建,保留测试「捷径」,以便遇到困惑、运行出错时继续用它测试。
![](https://img.haomeiwen.com/i5926056/db14fb567e5200c1.jpeg)
设置「捷径」的名称、图标,打开在小组件、共享表单显示的选项,将接受的数据类型限定为 Safari 浏览器网页、URL、联系人和文本。
第 ㊀ 段 保存读取到的数据
![](https://img.haomeiwen.com/i5926056/73694e95fe5ad16f.jpeg)
第 ㊁ 段 分别处理不同类型的数据
文本:数据类型是文本时只能是选中文字,因此 SelText
= Info
。
![](https://img.haomeiwen.com/i5926056/ae21165e696accc7.jpeg)
网页:SelText
= 页面选中文字,Due-action
= 页面 URL。
![](https://img.haomeiwen.com/i5926056/d3a2842768b0af85.jpeg)
URL:Due-action
= Info
。
![](https://img.haomeiwen.com/i5926056/1500d7a228da96f5.jpeg)
联系人:上面说到,从地图类 App、通讯录的共享表单启动时都是 Due-action
= Info
,其实这只是说从联系人读取出来的信息都属于附加段。
从地图选择某个位置,通过共享表单发送到「捷径」的只是单个 URL,而联系人是一种复合数据,可能包括多个电话号码、多个邮箱、多个主页、多个地址,或者是这几种信息的组合。在测试「捷径」中用「显示内容图」查看联系人数据类型,可以看到,它还可能会包括文件(例如图像、PDF)。
因此在这里,我们不能直接使用 Due-action
= Info
等式,必须依次读取联系人的电话号码、邮箱、主页和地址 4 种信息。
![](https://img.haomeiwen.com/i5926056/b535dcb5dd01fa19.jpeg)
![](https://img.haomeiwen.com/i5926056/ece0d9b9bec5a02d.jpeg)
![](https://img.haomeiwen.com/i5926056/155aaf8f7d89a933.jpeg)
使用「添加到变量」不会覆盖先前保存在变量中的数据,而是给数据列表添加了新项。
第 ㊂ 段 构建 Due 提醒的标题
经过第 ㊁ 段处理,SelText
可能存放了选中文字,也可能是空白,依此判断是否调用剪贴板文字。
![](https://img.haomeiwen.com/i5926056/bc337b65cf58f806.jpeg)
用「计数」统计 SelText
的项目数是否为 0。
![](https://img.haomeiwen.com/i5926056/25c0d9fd2a93e33e.jpeg)
SelText
为空白时用剪贴板文字替代。
![](https://img.haomeiwen.com/i5926056/6da31782b673aabe.jpeg)
添加「要求输入」对话框,设置 SelText
为默认标题。在这里可以检查、修改或直接确认。
第 ㊃ 段 附加后续动作
在框架总结部分说到,附加段的处理分三种情况:Due-action
的项目数小于、等于或大于 1。
![](https://img.haomeiwen.com/i5926056/224b217d50fb1b8e.jpeg)
等于 1 时不用特别处理,直接附加到标题后面。而大于或小于 1 时,都要使它等于 1 再附加。
先处理大于 1 的情况:弹出列表,从中选择一项。
![](https://img.haomeiwen.com/i5926056/13f66993763e8105.jpeg)
小于 1(即等于 0)的情况比较复杂一些:
![](https://img.haomeiwen.com/i5926056/8adae8d40eb8b4bc.jpeg)
弹出后续动作类型菜单供选择。
-
「联系人」菜单项
弹出联系人选择界面,然后和前面「第 ㊁ 段」一样,依次读取电话号码、邮箱、主页和地址。
如果所选的联系人中存放了多项信息,则再次弹出选择列表。
-
「常用 URL Scheme」菜单项
用「词典」预先设好一些 URL Scheme,在运行时弹出供选择。
-
「无」菜单项
如上图所示,什么都不用做,让
Due-action
空着就可以了。
第 ㊄ 段 拼接内容,添加提醒
![](https://img.haomeiwen.com/i5926056/f4f0c504f2cf3b8d.jpeg)
至此,「捷径」组装完成。
补充说明
这个「捷径」比原 Workflow 系列介绍中所举的例子都要复杂。
- 如果不在组装前理清框架和思路,很容易导致大量重复,使「捷径」十分臃肿。合理设计流程,是精简「捷径」的关键。
- 表达能力有限,如果有些地方的逻辑关系看不明白,最好画结构图加以辅助。
- 在判断数据类型和项目数量时,「如果…否则」本应层层相套,但我选择将它们并列(判断条件不是并列关系时不能这么做),这样显得清晰一些,也容易修改。
最后,附上「捷径」的下载地址:
https://www.icloud.com/shortcuts/e70f44cbf97542dfafec893289e30479
网友评论