FitbitのAPIで取得したデータを、GAS(Google Apps Script)を用いてスプレッドシートに自動で書き込みます。今回は歩数や消費カロリーなどの活動データの記録です。
GASのコード
スプレッドシートの用意までは、前回の体重データの書き込みと同じです。
スプレッドシートのシート名は「運動」としておきます。
GASのコードは下記を使います。(前回より汎用的にコードを修正しました)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
function getActivities(){ // 昨日のデータ取得 let date = new Date(); date.setDate(date.getDate() - 1); let yesterday = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); let res = getFitbitAPI(`https://api.fitbit.com/1/user/[user-id]/activities/date/${yesterday}.json`); if(res.summary){ let data = res.summary; Logger.log(data); //日付, 歩数, 距離, 消費カロリー, アクティブな時間 writeSheet([yesterday, data.steps, data.distances[0].distance, data.caloriesOut, data.fairlyActiveMinutes + data.veryActiveMinutes], '運動'); } } function getFitbitAPI(url) { var FITBIT_TOKEN = [token]; var options = { 'method': 'get', 'headers': { 'Authorization': 'Bearer ' + FITBIT_TOKEN } }; return JSON.parse(UrlFetchApp.fetch(url, options)); } function writeSheet(list, name) { let ss = SpreadsheetApp.getActive(), sheet = ss.getSheetByName(name); sheet.appendRow(list); } |
getActivities()をタイマーで実行することで、自動的に記録が始まります。
活動データの記録タイミングは?
1日の活動データの記録が終わるのはデフォルトで深夜0時です。
そのため翌日に記録することになります。
注意しないといけないのは、Fitbitアプリとの同期です。
Fitbitアプリに活動データが同期されていないと、APIから最新データを取得できません。
私の場合は、朝起きてから睡眠時間の確認でFitbitアプリを立ち上げるため、朝一で前日までの活動データが同期されます。
午前中の遅めにGASのタイマーを設定しておけば、正常に活動データを書き込むことができます。
スプレッドシートの記録確認
タイマーでGASが正常に作動していれば、自動でスプレッドシートに書き込まれていきます。
日付、歩数、距離、消費カロリー、アクティブな時間が記録されています。
並べてデータを見ることで、新たな気づきがありました。
11,253歩、歩いた日より、7,016歩で縄跳びを途中やった日の方が、消費カロリーが高いです。
歩数や時間では分からない運動の質も、消費カロリーで把握できるようです。
以上、スプレッドシートに自動で活動データを記録する方法でした。
日々記録することで、運動の習慣化にもつながると思います。