知识点:

  • 操作:词典(Dictionary)
  • 操作:记录健康样本(Log Health Sample)
  • 健康知识点:人一天所需饮水量的计算公式

注:本捷径可以代替 30 元的应用 WaterMinder。

捷径的最终效果

量化自我的其中一部分是量化自己的饮食,而量化饮食中必不可少的就是每天的饮水量问题。虽然我对统计饮水记录不太感冒1 ,但是对于很多人来说统计饮水记录的需求仍然存在。

App Store 中有一款相当不错的应用名为 WaterMinder,偶尔还上过 App Store 首页推荐,价格不便宜($4.99,偶尔降价)。其实这样的功能捷径是完全可以胜任的,所以我就动手做了一个可以记录饮水记录的捷径。

它能够:

  • 让你选择不同的饮水量
  • 让你手动输入饮水量
  • 提醒你今天还需要喝多少水
  • 提醒你今天已经喝够水了

接下来我们来看如何使用捷径来完成这些需求。

第一步:选择不同的饮水量

一般来说,我们喝水是有固定的容器和量的,比如说我,我有这么几个常有的容器和量:

  • 一口水:70mL(我测过)
  • 一瓶咖啡:170mL,这是自动贩卖机卖的那种小瓶咖啡
  • 一杯水:320mL,这是我自己的马克杯容量(不倒得特别满)
  • 一瓶果汁:330mL,这是我常买的果汁的容量
  • 一杯茶:335mL,这是我手冲柠檬茶的比例

大家想必也都有这样的常用容器和它们对应的毫升数,自己可以先都测一下,准备一下数据。

因为我们此前接触过列表这种形式,所以很多人肯定脑子里是用列表来实现选择饮水量。但是这样的体验其实是很不好的,那样的话我们看到的是一堆干巴巴的数字。有没有什么方法,可以让我们能够选择「一口水」、「一杯茶」这样的选项,记录的却是「70mL」、「335mL」这样的数值呢?

在捷径中有个操作,它虽然并不是为这个目的设计的,但却正好可以做到我们想做的事。这个操作就是「词典」:

操作「词典」

在这里,我们要选择「词典」中的「添加“新项目”」,再选择「文本」。随后我们可以看到添加出了一行两列的表格。表格的左边写着「键(Key)」,右边写着「文本(Text)」。

我们添加两次新项目,在左边分别填上「一口水」、「一杯茶」,对应着在右边分别填上「70」和「335」:

选择词典中的项目

再在下面接上「从列表中选取」,运行一下捷径,就会发现这个列表不一样,它没个选项都有两行字,一行字大一行字小。

而这时,我们选择「一杯茶」,出来的结果将会是「335」,而不是「一杯茶」这三个字。

这就是「词典」这个操作在这个场景的用途。词典的「键」是不会作为数据传输到下一步的,它只会传输「键」对应的「值」,在这里就是「文本」。

所以,按照我自己的情况,这个「词典」看起来应该是这样:

我的饮水记录「词典」

每一种饮水的方式,对应着它的毫升数。最后一项是「手动输入」这是因为我们肯定有时候会输入其他饮水量。手动输入的值也设成「手动输入」,这样就能保证传递下去的数据和我们看到的一致。

接下来我们就要接「如果」了,如果什么呢?如果上一步传进来的内容包含了「输入」,那么就让我们手动输入一个数值。在这里我们要用「要求输入」,因为当我们把「要求输入」中的输入类型选择为「数字」时,它可以直接在「“今日”视图」中使用。

添加饮水记录的操作组合

「如果」上一步传来的内容没有包含「输入」,那就只可能是我们预设好的那些数字了,那么我们不对这个数字进行任何处理,直接把它记录在「健康」之中。

第二步:将数据记录到健康里

把数据记录到健康中要用到的操作,是我们上一节提到过的健康相关的操作的其中之一「记录健康样本」:

操作「记录健康样本」

我们把它的类型设为「水」,单位设为「毫升」,数值则添加魔法变量「如果的结果」。在这里,「如果的结果」是:

  • 「如果」我们选择了手动输入,那它的结果就是我们手动输入的数字(毫升数)
  • 「否则」就代表我们选择了饮水量,比如「一口水」,那么它的结果就是相应的数字 70(毫升数)

到此为止,我们就成功地记录了每次的饮水量。你可以把这个捷径添加到「“今日”视图」之中,这样就可以使用「“今日”视图」里的捷径插件,来记录每次的饮水数量。

但是这个捷径做到这个地步是远远不够的,因为它对我们的记录没有任何反馈,这会让我们很容易对它失去兴趣。所以我们在这里要做一个反馈,让捷径告诉我们今天喝够水了没有,如果没有,要让它告诉我们还差多少。

第三步:判断今天饮水量是否足够

要判断今天的饮水量是否足够,首先就要判断今天该喝多少水。我们怎么判断自己今天该喝多少水呢?

中文环境下我搜到的认为比较靠谱的答案是知乎上 @逸轩居士 对这个问题的答案,他援引了美国运动医学研究所(Sports Medicine Institute)的数据,关键部分引用如下:

脑力劳动工作者,由于整天坐在办公室工作,流汗少,每天饮水量大约为体重的0.0326倍,体重以kg计,饮水量以L作为单位。例如,一名体重为60 kg的脑力劳动者,每天饮水量在1.96 L左右为宜。

简单来说,就是:饮水量(L) = 体重公斤数(kg) x 0.0326

3.1 获取体重

公式有了,我们该怎么获取体重?

这里有两种方法:

如果你有智能体重秤(数据可以记录到 iOS 健康应用里的那种),而且有经常量体重的习惯,那么我们可以从你的健康应用里获取体重数据。否则手动输入体重。

逻辑理清楚之后,我们来看如何用捷径做到这一点:

用捷径获取体重的操作组合

我们先用「查找健康样本」来获取体重:

  • 「Type(类别)」选择「Weight(体重)」
  • 「Start Date(开始时间)」可以尽量久一点,比如我这里填的是最近 1 年
  • 「单位」是公斤
  • 「排序方式」要按照「开始日期」
  • 最后「顺序」要把「最新的排最前」

接下来,我们使用标准的条件判断:

  • 先用「计数」统计上一步的结果的项数
  • 「如果」 结果的项数小于 1,就说明没记过体重,那么
  • 「要求输入」体重数
  • 并将其通过「记录健康样本」记录到健康中(这样下次就不用再手动输入体重了)
  • 「否则」,也就是结果的项数不小于 1,那么就直接获取结果的第一个(时间最近的那个)体重数据

现在我们已经获取了体重,下面的步骤就是计算我们所需的饮水量了。再看一下公式是:饮水量(L) = 体重公斤数(kg) x 0.0326

3.2 求出当天所需饮水量

很明显,第一步是要将体重公斤数(kg)乘上 0.0326。但是这一步我们获取的饮水量的单位是升(L),想要改为毫升(mL)的话,还要再乘 1000。转化为捷径步骤就是:

求所需饮水量的捷径操作组合
  • 先用「计算」把上一步获取的体重乘上 0.0326
  • 再用「计算」把上一步获取的结果乘上 1000
  • 最后用「为数字取整」,把结果化为整数(毕竟毫升就没有必要精确到小数了)

这样我们就根据体重,求得了我们每天的所需饮水量。

3.3 获取当天的已饮数量

再接下来,我们要从健康中获取我们今天的已饮水量:

获取我们今天的已饮水量的操作组合

当天已饮水量的获取方法的重点,在于把开始日期设为今天:

  • 把「Type(类型)」设为「Water(水)」
  • 把「Start Date(开始日期)」设为「是今天」
  • 「单位」我们选择「毫升」
  • 「分组方式」选择「天」

这样我们就获取了当天我们饮水的总量,包括过去记录的和刚刚记录的。

4.4 计算还差多少没喝够

知道了我们自己每天需要饮水的量,也知道已经饮水的量,两者一减就知道还差多少毫升。两者一除就知道喝了百分之多少。

在这里我们仅使用百分比为例,来说明如何用捷径求得这个百分比:

计算已经喝了今日所需水量的百分之多少
  • 在已饮水量之后,接上「计算」除以之前根据体重求得的需要饮水量
  • 再使用「计算」,将结果乘上 100(因为我们要获取的是百分数)
  • 利用「为数字取整」,在「取整」选择「小数点右侧」,「模式」选择「标准」,小数点位数设为「2」

这样我们就获得了一个百分数,虽然还没有为它加上百分号。

接下来,我们要把这个数字和 100 对比。如果它小于 100,那么就说明我们还没喝够,否则说明喝够了:

最终的饮水提示

我们直接在刚才获取小数点后两位的操作「为数字取整」后面接上「如果」。如果获取的数字小于 100,那么就「显示结果」告诉我们今天需要喝多少水,已经喝了多少。否则就通过「显示结果」告诉我们,今天已经喝够了所需的水分。

最终效果展示

捷径下载:饮水记录

  • 1我的理由写在了这里:https://www.weibo.com/5760215111/EygvGtsK3