最近の活動量計等は歩数や体重などのデータをスマホに送信できることも多い。それが可能な活動量計と体脂肪計を利用しているが、アプリで時折変化を眺めて満足してしまうことが多かった。予め用意されたフォーマットで見るだけでなく自分で分析したいし、データをバックアップしておきたいので、スプレッドシートにデータを定期的にアップロードするようにした。
できること
毎日定時にスプレッドシートに下記のような1行分のレコード(「昨日」の各種値)が追加される
仕組み
スマホ上でデータはHealthアプリに集約する(ここは各デバイスの純正アプリにすでにHealthへの同期機能があったため、それを利用)。HealthアプリからShortcutsアプリでデータを取り出し、GASを介してスプレッドシートに書き出す。
具体的な手順
- Shortcutsアプリで必要なデータを取り出してPOSTリクエストを送るショートカットを作成する
- 色々はまるポイントがあったので、以下画像内で記載する
- GASでPOSTリクエストを受けてシートに書き込むスクリプトを作る
function doPost(e) { // POSTリクエストを送信されたら実行される
var data = getData(e);
appendData(data);
}
function getData(e) {
var params = JSON.parse(e.postData.getDataAsString()); // POSTされたデータを取得
var values = JSON.parse(params.results); // Shortcutsアプリで作成したショートカットで、results: {values: {Weight: …} の形式でデータを入れている
return [
new Date(),
values.Weight,
values.BodyFatPercentage,
values.RestingEnergy,
values.ActiveEnergy,
values.Steps,
values.BodyTemperature,
];
}
function appendData(data) {
var sheetName = "HealthCareApp";
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
sheet.appendRow(data);
}
- 1.で作成したショートカットを毎日定時に実行するよう設定する
Shortcutsアプリの中でAutomationから定時実行を設定できる
感想
- ショートカットの作成をスマホ上で行うのがつらい。
- 簡単なショートカットだと問題ないのだけど、今回のように長くなるとぽちぽち押しての操作がつらくなる。Shortcutsアプリ自体はMacOSにもあるのでPCでもショートカットの編集は行えるが、HealthアプリがMacOSにはないのでHealthアプリの操作をする部分はPCでは編集できなかった。
- 編集後の差分を確認できないので、コードとして管理したい気持ちになった(Shortcutsアプリの意義と逆方向の感想になってしまうが…)