本节知识点:

  1. 操作:设定变量(Set Variable)
  2. 操作:添加到变量(Add to Variable)
  3. 操作:获取变量(Get Variable)
  4. 操作:获取天气预报(Get Weather Forecast)
  5. 操作:合并文本(Combine Text)
  6. 捷径知识点:为魔法变量重新命名

在进阶捷径三大元素——变量、条件、重复——之中,变量是最容易理解的,也是最基础的。在使用条件和重复的时候,往往都要和变量结合在一起来用。

变量相关的操作有 3 个:

3 个与变量有关的操作

它们分别是:

  1. 设定变量
  2. 添加到变量
  3. 获取变量

这些变量相关的操作的意义,在于可以让我们把过去的数据暂存,使其在后面也能够使用。

我们来看个简单的例子:每日简报(基础版)。

假设你是一个大忙人,想要做一个捷径,每天起床它都可以告诉你今天的日期,是星期几,天气如何,有多少项日程。这个捷径该怎么做?

如果好好阅读了前三周的内容,那么就算脑子里没有马上浮现出答案,你也应该能够通过搜索把相关的操作给找到:

制作简报的相关操作

这些操作分别是:

  1. 日期
  2. 获取天气预报
  3. 获取临近日程

按照普通人的理解,把这三项操作找到了应该错不了,那么先运行一下看看吧:

只有「获取临近日程」的结果

但是运行完之后,我们会发现,只有最后一个「获取临近日程」操作的结果。

这就是「从上往下」这种运行方式的结果——它只会为你显示最后一项操作的结果。只有通过变量,我们才能解决这个问题,让最终步骤显示出日历、天气、日程这三个操作的结果。

设定变量

我们先来展示如何用「设定变量」来制作这个捷径1 

首先,我们在「日期」这个操作下面加上「设定变量」。随后它会让我们输入变量的名称(变量名),这个变量名由我们决定,还可以写中文,只要这个变量名可以提醒你它代表的是什么就可以。我们这里就写「日期」:

为日期设定变量

接着,我们按照前面的方法,在「获取天气预报」和「获取临近日程」的操作后面也加上「设定变量」这个操作,并且把变量名称分别设为「获取天气预报」和「获取临近日程」:

为日期和日程设定变量

最后我们放一个「文本」操作,把上面这些变量名全都放到这个「文本」操作中(它们会出现在键盘上发的快速输入栏),再运行捷径,就会发现「日期」、「获取天气预报」和「获取临近日程」这 3 个操作的结果,按照变量的顺序出现了:

在「文本」中依次放置变量及输入结果

因为我们还没有对内容和格式进行设计,所以结果有些粗糙,但是这些就是我们通过这些操作需要获取的所有数据。

添加到变量与获取变量

接下来我们来看看如何用添加到变量来制作这个捷径。

首先,我们和之前一样,现在「日期」操作后面加上一个「设定变量」的操作。这次我们把变量名写成 总结果

把变量名改为「总结果」

接下来,我们不在「获取天气预报」和「获取临近日程」的操作后面接「设定变量」,而是改为「添加到变量」:

把「设定变量」改为「添加到变量」

这时候我们仍然需要填写变量名,而且要和之前「设定变量」里填写的变量名保持一致,所以也要写成 总结果

在最后,我们加上「获取变量」这个操作,获取之前「设定变量」和「添加到变量」所添加的变量名一样,也要是 总结果。不过在「获取变量」这里应该可以选择,不用手动输入:

在操作列表最末加上「获取变量」

然后我们再运行捷径,会发现结果和我们预想的不太一样:

运行捷径后的结果

结果乍一看竟然只有日期,但是在结果界面的底部有「1/13」的字样。这说明结果其实有 13 项,我们现在看到的是第 1 项结果。我们划动结果部分可以查看后面的结果,就会发现发现结果正是「日期」、「获取天气预报」和「获取临近日程」这 3 个操作的结果。

这三个结果按这种方式显示是由于捷径的机制。当捷径的结果,确切地说是捷径的某个操作的结果2 是复数,也就有多个的时候,它是以列表的形式出现的3 。在捷径的操作列表里展示结果时会在底部以「数字 A / 数字 B」的字样来表示当前查看的是第 A 项结果,总共有 B 项结果。当我们把结果放大,会发现右下角有列表符号,轻触列表符号也会发现结果会平铺开来。

轻触列表符号,查看所有结果

如果想要把这些结果统一到一起,我们应该用的操作是「合并文本」:

操作「合并文本」

合并文本的结合方式有很 3 种,分别是:

  1. 新行(New Line):合并文本后,每项之间用换行隔开。
  2. 空格(Space):合并文本后,每项之间用空格隔开。
  3. 自定义(Customize):合并文本后,每项之间用自定义的字符隔开。

在这里,我们要在「合并文本中」选择「新行」,就可以将原本为列表的多个结果合并到一个结果,并且用换行的方式重新组织内容:

左:未使用「合并文本」;右:使用「合并文本」

这下结果就和之前单纯使用「设定变量」和「文本」这两个操作那个捷径的结果一致了。

注意,「合并文本」这个操作并不能把所有的「多项结果」给合并起来,比如多个图片就无法用合并文本解决,它只能解决结果都是文本时的情况。而我们例子所遇见的恰恰就是这种情况。

魔法变量

我们在《1–2 改进一:在结果中排除视频和截图》就提过魔法变量,但当时我们只是使用它,并没有系统地认识它。现在,你对「变量」相关的操作在捷径中的意义以及使用方法都有了一定的了解。在了解了传统的,也是正规的变量使用方法后,我们就能更清晰地认识到「魔法变量」的作用和效果。

现在我们直接用魔法变量来整合「日期」、「获取天气预报」和「获取临近日程」这 3 个操作的结果。

它的套路和设定变量的部分更接近。在放好「日期」、「获取天气预报」和「获取临近日程」3 个操作后,我们直接在最底部加上「文本」操作:

不要变量,直接加「文本」操作

这时候我们如果观察键盘上的快速输入栏,会发现有几个按钮,分别是「临近日程」、「天气状况」,往后滑一下还能看到「当前日期」。而它们就分别对应了「获取天气预报」、「获取临近日程」还有「日期」这 3 个操作的结果:

在快速输入栏中找魔法变量

至此,相信你应该已经明白了魔法变量的作用。它代替了「设定变量」的这个操作,主要的好处是大大缩短了捷径制作的步骤。就拿例子中的捷径来说,我们甚至可以继续精简步骤,因为捷径中的快速输入栏中自带了「日期」这个选项。所以我们可以拿掉原本在最上面的「日期」操作,直接在「文本」操作的最上方,用快速输入栏中自带的「日期」来代替它:

删掉「日期」操作,进一步精简捷径

你可能会觉得用魔法变量的话,变量名没有自己手动设置那样清楚。这不是问题,因为我们也可以手动修改魔法变量的名称。

捷径知识点:为魔法变量重新命名

轻触你想要修改名称的魔法变量,比如「临近日程」。随后在弹出界面上方,有一个「重新命名」的按钮,轻触它就可以修改魔法变量的名称。

修改魔法变量的名称

像这样,原本要用到 7 个操作的捷径,现在只用 3 个就解决了,这就是魔法变量的主要作用。

魔法变量不是一开始就存在于 Workflow 的,它是在 Workflow 1.7 版 之后才加入的新功能。在那之前有些特别复杂的捷径,其中多个步骤下面都需要加上变量,步骤会因此变得很多,操作列表会很长。

魔法变量的作用还不止于此。上周有一道练习,是获取 App Store 中应用的信息时,像 Todoist 那样使用 Markdown 的语法来组织信息:

通过共享表单分享 Tweetbot 到 Todoist

本来我们想要做到这一点,需要使用「获取 App Store 应用的详细信息」的操作。而如果我们使用魔法变量的话,我们就不再用「获取 App Store 应用的详细信息」这个操作来获取 App Store 应用的详细信息了,直接在「文本」这一个操作里,用魔法变量就能完成这一切!

通过魔法变量,实现按 Markdown 格式获取应用标题与链接

这是因为魔法变量已经包括了「获取 App Store 应用的详细信息」的功能,你可以理解为:

魔法变量 = 获取数据 + 获取该数据的详细信息

如果我们选择了针对 App Store 应用的魔法变量,那么它就相当于直接接上了「获取 App Store 应用的详细信息」这个操作,我们只要轻触魔法变量,可以选择 App Store 应用的标题、图标、截图、URL 等等。

在魔法变量中选取 App Store 应用的详细信息

如果是换成图片呢?如果我们针对图片应用魔法变量,或者说选择了一个可以获取图片的操作下的魔法变量,那就相当于在图片下面接了一个「获取图像的详细信息」,这可以让我们直接获取某一张图片的各类详细信息。

如果你在捷径的搜索里搜索「详细信息」,你会发现捷径提供了各种各样可以获取某个类型文件的详细信息的操作。除了我们已经知道的 App Store 应用和图片的详细信息以外,还有:

  • 文章的详细信息
  • Safari 网页的详细信息
  • 健康样本的详细信息
  • 天气状况的详细信息
  • 位置的详细信息
  • iTunes 产品的详细信息
  • ……

所有这些「详细信息」操作,也都可以利用魔法变量来实现。

小结

到这里大家应该对捷径中的变量以及魔法变量有了一定程度的认识了。

捷径的运行方式是从上到下的,但它只会获取最后一个操作的结果。所以,如果我们按直觉地摆 3 个操作出来,捷径是不会把这 3 个操作的结果都显示出来的,它只会显示最后一个操作的结果。如果我们想要显示这 3 个操作的结果,就需要用到变量。

在这一节我们也见到了变量的几乎所有用法:

首先「设定变量」和「添加到变量」是插在我们想要获取结果的那一步操作之下的。它俩的关系是后者的功能包括了前者,也就是说当我们想设置一个新变量的时候,我们可以用「设定变量」,也可以用「添加到变量」,只要保证变量名不同就不会造成问题。

使用「添加到变量」,把多个数据添加到同一个变量名下时,这个变量会产出多个结果。这时候如果想把它们合并,如果它们是文本的话,可以用「合并文本」这个操作。

最后,希望大家在理解了传统的、正规的变量用法后,再去研究使用魔法变量。因为魔法变量的本质是传统方法的精简,它是个近路,但不利于对整个捷径结构和逻辑的理解。而且魔法变量并不能完全替代传统的变量用法,我们会在后面的教程中多次认识到这一点。

本节练习:

修改 @24says 获取照片 EXIF 详细信息的 捷径,可以获取一张照片的全方为的信息。这个捷径基本没有使用魔法变量,你可以试试用魔法变量精简一下它的步骤。

捷径效果:

捷径「获取照片 EXIF 信息」的效果
  • 1为了便于理解,我们在最初将不会省略任何操作。
  • 2在这里是「获取变量」这个操作的结果是复数。
  • 3检验一个东西是不是列表,可以直接在它的下面接「从列表选择」这个操作。你可以在「获取变量」之后加上「从列表选择」这个操作,就会发现它会为你提供选项供你选择,选项就是之前 3 个操作的各自的结果。