Fitbit ランニング記録を Google Sheets で集計するのに便利なスクリプト
Fitbit ランニング記録の集計補助スクリプト
Python スクリプト fitbit-exercise-json-parser を作った。これは Fitbit が出力する活動記録の JSON から、次の 8 列を持つ TSV を生成する。
| 列名 | 意味 |
|---|---|
startTime | YYYY-MM-DDThh:mm:ssZ 形式の日時 |
distance | メートル単位の走行距離 |
duration | 分単位の走行時間。小数第 2 位まで |
distanceUnit | meter で固定 (のはず)。処理が正しいことの検証目的で入れてる |
durationUnit | minutes で固定 (のはず)。処理が正しいことの検証目的で入れてる |
activityName | ランニング で固定 (のはず)。処理が正しいことの検証目的で入れてる |
source/type | tracker で固定 (なのかな?それ以外を見たことがないので詳細不明) |
source/name | Fitbit のモデル名 (例: Charge 5) |

使い方は、端末から次のように実行するだけ。簡単。
$ python fitbit-exercise.py path/to/exercise-{number}.json

これは僕が自作した Python スクリプトなので、僕の目的にチューニングされてる。必要とあればフォークして改造しちゃってくださいね👍
Fitbit のデータの入手先は?
Fitbit のデータは Google データ エクスポート からダウンロードできる。

使用するのは以下の JSON ファイル。{number} の箇所には数 (0 とか 100 とか) が入る。
/Takeout/Fitbit/Global Export Data/exercise-{number}.json

エクスポートした ZIP には他にもたくさんのファイルが含まれてる。他に集計すると有用なものもあるかもしれないけど、僕は詳しく調べられていません。
さて、ここから下は余談 & 背景。
Fitbit の管理画面って廃止予定なのかな?
一応 Fitbit は web の管理画面がある。でも web 管理画面からは運動の記録を参照できない。ログインすると「Fitbit アプリでデータを見ろ」と言われてしまう。Google によって買収されてからは、これが Fitbit の方針ということ?

2023 年末時点で、管理画面はこんな (👇下掲の画像) だった。画面上部に [Dashboard]、[Log]、[Community]、[Labs] のタブがあったのだ。2024 年末現在 (👆上掲の画像) では、[Log] と [Labs] は無い。特に [Log] を無くした変更は、酷い改悪だと思う。そのための画面でしょうよ。

Google Sheets で独自の集計をしたい場合、Google アカウントのデータエクスポートを使うしかないのかな?僕はそう思って、エクスポートした JSON を解析して Google Sheets に貼りやすい TSV を生成するようにした。アプリで記録を見るのもいいけど、Web でデータ見れないのは不便だよねえ。
Fitbit の Web 画面は一応存在するけど、プロフィール画像を設定できなかったり、リンク URL がリダイレクトだらけだったりで、はっきり言って打ち捨てられてる状態。廃止自体は構わないから、せめて Google Fit のデータを PC で簡単に見れる手段を用意してくれ!
ランニング記録と、その付け方
2024 年のランニングの累計は 80 km 弱。1 回につき約 6 km 強を走って計 14 回。頑張った去年に次いで、記録のある中では 2 番めに長い距離を走った年になった。実は 12 月 29 日に集計したら 2020 年の記録に 1.2 km だけ及ばないと分かり、急いで 30 日に追加で走って 2 位に差し込んだのよね😉

記事前半に書いたように、ランニングの記録は Fitbit で付けてる。2023 年末頃までは Twitter に毎回書いてたんだけど、距離は Google Maps での目測に頼っていて不正確だし、時間も分単位でしか取れなかった (秒単位で測るのは手間だった)。Fitbit なら走り始めと終わりに操作するだけで楽ちんだ。
ところが Fitbit の計測データは、Google Sheets で再集計するのがすごく面倒。Fitbit の Web 画面で整然データ化されたデータをコピペできれば楽なんだけど、それは期待できそうにないし。Google からエクスポートされる JSON は、そのままでは Google Sheets では扱えないし。めんどくさい!😩
そういうわけで、僕は集計用の Python スクリプトを作ったのでした。開発は ChatGPT に聞きながらだったので、全然簡単だった。最終的に出力される TSV を Google Sheets に貼って、所定のフォーマットに再整形してから記録シートに写してます👍

=B2&" m / "&C2&" min ("&text(I2, "YYY/MM/DD")&")" で整形して記録シートに貼ってる