你的时间都去哪了?我做了这个 Workflow 来记录上下班所需时间

如果你和我一样,每天的上下班通勤时间较长且存在变数,那么是否会有记录下这段时间的想法?

之前,我一直使用 Moves 追踪自己的地理位置信息,这样也能较为粗略地记录下通勤时间。但可惜的是,自 iOS 11 发布之后 Moves 就不再更新,目前已经无法正常使用。

提醒:Facebook 已于 2018 年 6 月 31 日正式关闭了 Moves 服务,推荐使用 Gyroscope 替代。

后来,我尝试寻找能满足通勤时间记录的应用,不过大多都是以定时器的形式存在。如果使用定时器记时,每次都需要执行较为复杂的步骤:打开定时器应用 → 开始计时 → 结束及时 → 关闭定时器应用。更关键的是,当你想保存下每次持续的时间时,你还需要另想办法。

最后,我将目光放在了 Workflow 上,并通过与 Airtable 配合实现了记录上下班通勤时间的想法。

实现思路

首先,Workflow 中是没有与记录时间相关的 Action,只有能获取到当前时间的 Date 动作。

所以,本文的思路是通过 Workflow 获取到每一次开始和结束计时的时间戳,再将其更新到 Airtable 中,并使用 Airtable 中提供的 Formula 公式计算时间差。该时间间隔即为上下班通勤时间,同时将时间保存在 Airtable 中并返回到手机上。整个过程如下图所示。

如上图所示,每次运行该 Workflow 时:

  1. 先选择上班、下班状态;
  2. 点击开始计时,Workflow 会将当前时间戳上传到 Airtable 中;
  3. 到达目的地后,点击结束计时,Workflow 会将当前时间戳上传到 Airtable 中;
  4. Airtable 会计算时间差,并返回如上方右图所示的通勤时间结果。

配置和安装

该方案对应的 Workflow 制作非常简单,但需要你对使用 HTTP 请求方法比较熟悉,也就是 Workflow 中 Get Contents of URL 动作。而这里面临的主要困难是如何在 Airtable 设置正确的数据表结构。

回顾上一小节提到的实现逻辑,你可能觉得只需要新建一张表格存储 Workflow 上传的数据即可,其实不然。这里无法利用单张数据表实现的原因在于,当上传数据到 Airtable 中时,每一条数据记录都会新建一行,于是就会出现数据交错的情况,也就无法计算时间差。

于是,这里选择新建两个表,分别是 Update 数据表和 Time 数据表。其中,Update 表用于处理 Workflow 上传的时间及计算时间间隔,Time 表则用于记录每次通勤的时间。其中,Update 表如下图所示:

当 Workflow 上传时间戳时,选择使用 Airtable 更新数据记录的 XPATH 请求方法,而不是新建数据记录的 POST 请求方法。于是,这里的 Update 表格中始终只有一行记录。

另一张 Time 表如下所示:

其中:

  • Num:Airtable 中的 Auto number 属性,也就是自动计数器。
  • Created:Airtable 中的 Created time 属性,当某一条数据记录产生时,该属性列会自动记录当前时间。该时间也就是上班或下班到达目的地时间。
  • Action:通过 Workflow 上传,记录运行 Workflow 时选择的上/下班状态。
  • Time:通过 Workflow 上传,记录 Workflow 前一步从 Update 表中获取到的时间间隔。

完成以上的步骤,一切就大功告成了。如果你想直接使用我制作的 Workflow 和 Airtable Base,需要按下面的顺序配置:

  1. 通过 此链接 访问与文中结构一致的 Airtable Base,并点击右上角的 Copy base 复制到自己的 Airtable 中。
  2. 通过 此链接 安装对应的 Workflow,安装时根据提示问题修改自己的 Airtable API 信息和对应的请求 URL

如果你对 Airtable API 不太熟悉,可以通过界面右上角的 HELP 选项查看官方给出的示例用法。

最后,我不愿意夸大记录通勤时间的意义,因为每个人的想法和需求是不一样的。不过,就我个人而言,探索「充分利用工具」的过程十分有趣。