一、背景概述

上一篇文章搞定了苹果健康应用里面的存量数据的导出及转换格式倒入自己的维格表格(云端数据库),本篇完成每天新记录的健康数据通过【快捷指令】自动化执行上传同步到维格表格。

本篇主要内容:

1、通过维格表格标准API接口编写一个快捷指令的思路

2、实现批量苹果健康数据每天自动化同步到维格表

二、准备内容

  1. 快捷指令app
  2. 苹果健康app
  3. ios手机一台
  4. 建立好的健康指标专用维格数据库

三、过程记录

1)了解维格API与快捷指令URL组件

在维格API里面咱们只需要用到这个add新增数据这个接口就行,四部分对应内容如图片所示对应。

什么是token,是你维格账户的唯一密钥,可以当作是往里面添加数据的进门钥匙。所以这块我单独拿一个变量进行了存储,方便把快捷指令分享给他人的时候快速直接复用。

data是顾名思义就是要上传的数据内容部分,维格限制了一次最多只能新增10条,咱们就建立一个10条内容的文本进行赋值就行。在执行接口请求的时候需要带上。

理解了这个关键组件使用就可以做很多自己的玩法研究了。

2)设计编写快捷指令过程及思路

第〇步、验证官方API的有效性

避免做无用功,第一步永远是先自己测试一下官方给的接口是否能调通,上网随便搜一个在HTTP在线调试工具,也是按请求地址、header、data三部分把内容填进去。

发送请求后,获得反馈状态码为200表示请求指令执行成功。同时也会返回对应添加内容的一些其他例如添加时间、自增序号之类的属性字段。

如果返回状态码不是200,可以根据官方的手册、联系客服以及自己查看代码格式等形式找到问题(我就多了一个逗号报错半天),减少后期在快捷指令中出现问题的风险。

第一步、获取正确的健康样本数据

因为目的功能非常明确,就是要做一个每天晚上同步手机里的健康数据的自动化捷径。所以取到正确健康数据很关键。然后才是把数据上传等操作。

我是之前在写格志日记就熟练使用这部分的健康数据查找使用了,但是不妨记录一下思路。

1、先在苹果健康中找到想要记录的身体指标,查看所记录的数据详情。

以睡眠为例子,里面都是一段一段的持续时间。

2、所以第二个就是从样本数据中获取持续时间

例如步数就是获取值、心率也是获取值

3、对获取的数组内容做预处理

睡眠就是把各段睡眠持续时常做累加即可,但是最高心率就是取最大值,最低心率就是取最小值。

4、对获取的数据做单位转换

大部分健康数据都可以通过累加综合等方式就能直接使用,但是睡眠需要做单位转换。

把获得的持续时间观察一下就知道是多个以秒为单位的时间。

从秒的数值转换为x小时x分。我用了一个笨办法,先把累加计算的结果除3600,取整数,就是小时数然后设定小时变量,完了再用除3600的结果减去设定变量的小时变量就能得到0.几的小时直接再乘一个60就能得到分钟数,再设定一个分钟变量。2个变量数文本一拼就是昨晚的睡眠数据了。

5、最后一直调整到能得到想要形态的结果数据

然后按同样的方法尝试其他类型指标的提取方式或办法,目测应该没有比睡眠时长更麻烦的了,其他的都很简单。

第二步、实现一个最小样本数据上传

有了前两步的积累就能实现一次快速的单健康数据同步上传了。

把从健康中获得数据结果赋值一个变量,然后直接填到对应的URL数据中,运行快捷指令。查看返回结果是不是200,同时登陆PC端的维格数据表查看是否确实数据更新到位。没问题就实现了一个最小MVP。

第三步、编写完整的快捷指令程序

这部分就比较枯燥了因为接口限制是批量新增最多10条,所以咱们就充分利用十条,创建10个健康数据获取的程序块,分布赋值指标1-10,然后data数据文本也扩充为10条记录。

之前有一个小伟大神开发的快捷指令复制捷径,现在已经失效了,只能用目前我能找到最快的方法:用IPAD编写,通过右侧收藏列表,快速拖拽需要的组件到程序序列中,但是偏偏ipad端又是没有健康app的,最后还得回到手机端再挨个设置里面的细项,大概花了1小时做这个事。

第四步、优化快捷指令程序使用体验

1、提取赋值变量做公共词典

在第三步我所有的指标名称都是直接写死在data的文本框里面的,如果要修改起来是比较麻烦的,包括请求地址和token其实都是自定义文本的赋值,我就干脆设置了一个词典,然后在data文本中直接使用词典中指定键值。在开篇完成相应的定义,方便自己清晰总览同时被他人个性化使用。

2、给运行结果添加提醒反馈

简单写一个如果否则的判断程序,对提交URL请求后返回的内容做一个展示。如果成功直接告诉已经上传成功的结果,失败往前台透出相应的错误状态码详情及说明。

方便使用中定位问题。

3)设置自动化运行捷径

这部分应该还有坑,因为薄荷健康都是12点定时同步数据到苹果健康的,也就是12点之后才能拿到前一天的数据,所以我取的都是最近1天的数据,而不是「在今天」的数据,然后配合运动手表的健康运动的app,需要每天打开之后才能通过蓝牙同步数据,需要在往维格上传之前先把手表的数据同步都手机上先,可以做成一连串的自动开启应用,再关闭,最后再开同步。
 

还经常有奇怪的地方会卡住。等我研究透再稿一篇好了。实在不好自动化每天早上起床关掉闹钟后,手动点击一下执行同步健康数据的快捷指令也行,刚好拿到完整的睡眠数据。

四、心得体会

1、我会把写完的快捷指令分享出来,关注我账号私信回复关键词“维格健康”给您发送本文完成的快捷指令的下载链接。您可以个性化编辑修改为己所用。

2、除了这种定期同步每天会产生的健康指标之外,还有一些例如不定期的测尿酸,测血压,体重,体脂及运动记录也可以用类似的快捷指令组件完成数据的记录,但没必要每日同步上传了。

3、有了存量健康数据、及每天同步的新数据,下一步就可以搭建「健康指标数字驾驶舱」。