如何保存 Shortcuts 某次的运行结果?或者说,怎么调取 Shortcuts 上次运行的结果?对于 Shortcuts 来说一直是个重要的问题。这个问题关系到捷径到底能处理多复杂的需求,关系到它是个小玩具还是可以做更多的事。
到了捷径(当时还叫捷径)的 1.5.3 版本,这个问题才体面地被解决了。除了因为在这个版本,捷径终于可以与一些网络服务的 API 互动之外,也因为彼时也同样是在线表格编辑工具 Airtable 在慢慢扩大影响的时候。所以人们很快将联合这两个在效率工具圈频频露面的工具。捷径从此得以与表格挂钩,也就是可以产生、读取和追加信息到表格。1
实际上,Shortcuts 一直都可以直接将每一次运行的结果保存到本地,只不过不太“体面”。在 API 互动的功能出现之前,就可以通过系统应用(备忘录、提醒事项等)来保存信息、读取信息。然而通过系统应用是个变通方法,它生成的内容格式过于受限,使用场景也因此受限。所以只能说是应急,和处理表格这个级别的能力还相去甚远。
令人难以置信的是,通过 Shortcuts “创建、读取和修改表格” 的通用解决方案,一直都存在,而且无比简单。它来自于一个在效率圈总是作为“附带一句”被提起,却又几乎被所有相关工具支持的格式——CSV。
其实,Shortcuts 可以与 CSV 联动这个点早已被人发现。搜索一下也可以发现星星点点的思路和做法。只是人们对 CSV 这个格式过于不敏感,导致它的话题性比起华丽的 Airtable 差了太多。但是 CSV,Comma-Separated Values(逗号分隔值),是个应该更多地被注意到和使用的格式。因为它的纯文本与直接和 Excel 互通的特性,它特别值得 Power User 的注意。
越是使用多个操作系统、多个效率工具的 Power User,就越应该了解像 CSV 这样**每个操作平台、每个相关效率工具都支持的,纯文本的格式。**而 CSV 还是其中规则特别简单易学的。
得益于 CSV 格式是纯文本,它的另一个明显好处就是非常容易修改。很多 Excel 表格处理上的问题,都可以使用各位 Power User 熟悉的自动化工具搭配 CSV 来解决。朋友可能认为你很懂科技所以很懂电脑又所以很懂 Excel 然后拜托你解决一些 Excel 问题。但他不知道你根本无法忍受那种东西。这时候很大概率你可以通过 Shortcuts + CSV 的组合来挽尊。
CSV 简单介绍
根据本站 UTGD 所涵盖的内容范围和主张。作为纯文本格式的 CSV 是一种以后经常被提起的格式。
看到图片熟悉 Anki 的朋友想必已经明白了。并不需要每次都在电脑前用 Excel 来做内容然后导入 Anki,而是可以在任何地方,用各种设备来随时向 Anki 发送单词。
CSV文件:纯文本→表格
简单来说,CSV 就是可以让你输入纯文本但生成表格的格式。所以当你马上要做一张简单的表,或者需要用到表格这种格式,但手边没有“重武器 Excel”的时候,请在脑子里“表格”这个词的旁边放上一个“轻武器 CSV”的词条。
纯文本 → CSV → 表格
纯文本代表它对输入工具没有要求,使用难度极低。能打开个文本编辑器,你就能用 CSV,也就是说,你可以制造表格。
CSV 文件的基本写法
CSV 有几条规则和规范,但记住以下两条,足以应对大多数场景都问题。
- 分隔符,一般是逗号
,
- 牵涉到换行,用半角引号
"
把内容引起来
接下来分别展开说明一下(附带实例)。
分隔符,就是让电脑知道,“这个符号可以区分前后的内容,把1段内容划为2个表格”。它一般是逗号 ,
实际上,CSV 这个缩写,展开就是 Comma-Separated Values,逗号分隔值。
比如我们要记住“戦々恐々”这个日语单词的意思,我们可以写:
戦々恐々, 战战兢兢,心惊胆战
因为 CSV 它必须要用半角逗号,
来分隔内容,所以中文里使用的全角逗号,
没有分隔内容的作用。
现在再来看换行等特殊情况。做表格我们一定会遇到换行的情况。比如做 Anki 卡片,一个单词有多个意思,一个知识点有多个要点:
冴える,"勘がさえる 直觉敏锐 技がさえる 手艺高超 月がさえる 月色"
这种时候,我们通过半角引号"
来告诉 CSV,包着的内容都在一个格子里,不要分开。哪怕里面有用于分隔内容的分隔符半角逗号,
也都要塞在同一个表格里。
以记录新冠人数为实例在 iOS 上用 Shorcuts 结合 CSV
2021 年中旬左右,日本的新冠阳性人数从数千上升到 5 位数。当时的我还没有脱敏,所以希望对每日新冠人数有个整体的把握,所以就制作了一个 Shortcuts,在每天早上告诉我有多少新的阳性,并且把记录保存到 CSV。
这个 Shorctus 我一直用到 2022 年中旬,后因为以下三个原因停止使用:
- 已经对感染人数脱敏
- 换手机后自动化没有同步,也是因为这个经历,我才发现自己已经对感染人数脱敏
- 我调用感染人数的 API 后来也停止维护
不过因为这确实是我真实使用的例子,所以在此还是决定以它为例来说明通过 Shortcuts 使用 CSV 的技巧。
我们一般和表格产生的基础交互有 4 种:
- 创建内容
- 获取内容
- 追加内容
- 删改内容
这 4 种通过 Shortcuts 和 CSV 的组合都可以解决。 而且 Shortcuts 创建/追加/删减/获取 CSV 的所有方法,包括在 macOS 上突破沙盒限制来读写文件的方法,都可以在处理其它纯文本文件时直接套用。
注:因为删改内容相对比较麻烦,且在 iOS 环境下用 Shortcuts 删改 CSV 实用程度较低,所以在此不涉及。如果有想要详细讨论的,请考虑 成为本站会员 后 加群 提问。我将第一时间为你解答。创建
首先,最好先在 iCloud Drive 里的 Shortcuts 文件夹,创建一个 CSV 文件。文件名随意,我在当时起的名字是“新冠统计.csv”。
为了日后方便以表格形式查看,用其他软件处理,我们可以做一个表头。在 CSV 中制作表头,就是在第一行写上表头的各项内容,以半角逗号,
分隔:
必须要创建在 iCloud Drive 里的 Shortcuts 文件夹是因为 iOS 上的 Shortcuts 无法在这个文件夹之外添加内容2。
要突破这个限制,可以选择的做法有两个:
- 使用 Dropbox。但使用 Dropbox 本质上和放在 iCloud Drive 里是一样的,都不是在“任意位置”添加内容,而只是在一个限定了的文件夹里。
- 在 macOS 上做这件事。macOS 可以使用“运行 Shell 脚本”这个动作来在任意位置读写文件。
添加内容
接下来,我们就可以往这个文件里添加内容了。这只需要两个动作:
在文本框内我们看到了各种变量。这些变量当然都是从 API 中获取的各项数值。但是因为前述的脱敏和 API 失效等原因,我如何从 API 获取这些数值的部分就不再有参考意义。
至于这些如何获取国内新冠人数的 API,网上应该随手可查。至于如何在 Shortcuts 中调用 API,我也在2016年就写过文章,后面也写过教程。不了解的话可以加入本站 Slack 群,我可以将相关内容发给你。总之,API 相关内容不是本教程的重点,展开将过于繁琐,在此按下。
回到正轨,所以如上图所示,对于要记录新冠感染人数这件事来说,我们完全用不到半角引号,只是在用半角逗号来区分一些数字,就做出了其它工具里都可以使用的表格。
鉴于大家读到这篇文章时,很难马上结合 API 做出完整功能的 Shortcuts,我这里放一段数据,可以直接复制粘贴到 Shortcuts 里的文本框里。再结合“追加到文本文件”,就能直接体验给表格追加一行内容:
2021-08-12,10866,129496,1055203,8.39%
获取
获取有两个含义,一个是获得文件的全部内容。一个是精确获取某一行某一列的内容,作为查询。
获取 CSV 全部内容在 Shortcuts 中要用的动作是“获取文件夹中的文件”:
而精确获取某一行某一列的内容稍微有点点麻烦,需要用到多个技巧。
举例来说,我们要获得 2021 年 8 月 13 日这一天的新增阳性的人数。那么它在 Shortcuts 里的方法是,先找到 2021 年 8 月 13 日这一行,再找到第二项(因为第二项是当天的新增人数)。
第一步,找到 2021 年 8 月 13 日这一行非常容易,因为 CSV 是纯文本,我们只要用“匹配文本”即可:
第二步,获取第二项。这也是 Shortcuts 的入门级操作。我们先用“拆分文本”,以半角逗号,
为分隔符,把这一行内容拆开,然后在用“从列表中获取项目”,获取索引第2项的内容即可:
附:macOS 上 Shortcuts 的特权:写入文件夹不受限制
如果你的主要工作环境是 macOS,那么你应该看一下《用 Shortcuts 制作 Stand-up meeting 模板》这篇文章的“在 Shortcuts 利用 Shell 命令做好本地备份”这一章节。在这一章节,我介绍了通过“运行 Shell 脚本”这个动作,让 Shortcuts 摆脱沙盒,在 macOS 系统上任何一个位置读写文件的方法。这个方法与《用 Shortcuts 制作 Stand-up meeting 模板》这篇文章的其它部分没有必然联系,可以单独掌握。