Fitbit ランニング記録を Google Sheets で集計するのに便利なスクリプト

最終更新日

Fitbit ランニング記録の集計補助スクリプト

Python スクリプト fitbit-exercise-json-parser を作った。これは Fitbit が出力する活動記録の JSON から、次の 8 列を持つ TSV を生成する。

列名意味
startTimeYYYY-MM-DDThh:mm:ssZ 形式の日時
distanceメートル単位の走行距離
duration分単位の走行時間。小数第 2 位まで
distanceUnitmeter で固定 (のはず)。処理が正しいことの検証目的で入れてる
durationUnitminutes で固定 (のはず)。処理が正しいことの検証目的で入れてる
activityNameランニング で固定 (のはず)。処理が正しいことの検証目的で入れてる
source/typetracker で固定 (なのかな?それ以外を見たことがないので詳細不明)
source/nameFitbit のモデル名 (例: Charge 5)
出力 TSV の列の意味
変換後の TSV

使い方は、端末から次のように実行するだけ。簡単。

$ python fitbit-exercise.py path/to/exercise-{number}.json
実行の様子

これは僕が自作した Python スクリプトなので、僕の目的にチューニングされてる。必要とあればフォークして改造しちゃってくださいね👍

Fitbit のデータの入手先は?

Fitbit のデータは Google データ エクスポート からダウンロードできる。

Google データ エクスポート

使用するのは以下の JSON ファイル。{number} の箇所には数 (0 とか 100 とか) が入る。

/Takeout/Fitbit/Global Export Data/exercise-{number}.json

元の JSON は場合によって 9,000 行もあって扱いにくい。スクリプトの出番だ

エクスポートした ZIP には他にもたくさんのファイルが含まれてる。他に集計すると有用なものもあるかもしれないけど、僕は詳しく調べられていません。

さて、ここから下は余談 & 背景。

Fitbit の管理画面って廃止予定なのかな?

一応 Fitbit は web の管理画面がある。でも web 管理画面からは運動の記録を参照できない。ログインすると「Fitbit アプリでデータを見ろ」と言われてしまう。Google によって買収されてからは、これが Fitbit の方針ということ?

Fitbit アプリで記録を見ろと言われてしまう…🤔

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

[画像] Nippon IT チャリティ駅伝 2023 に参加してみた🏃 – 回れ右の内輪差

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 位に差し込んだのよね😉

2020 年の記録を上回るために、急遽 2024-12-30 も前日に続けて走った

記事前半に書いたように、ランニングの記録は Fitbit で付けてる。2023 年末頃までは Twitter に毎回書いてたんだけど、距離は Google Maps での目測に頼っていて不正確だし、時間も分単位でしか取れなかった (秒単位で測るのは手間だった)。Fitbit なら走り始めと終わりに操作するだけで楽ちんだ。

Twitter に残る最後のランニング記録

ところが Fitbit の計測データは、Google Sheets で再集計するのがすごく面倒。Fitbit の Web 画面で整然データ化されたデータをコピペできれば楽なんだけど、それは期待できそうにないし。Google からエクスポートされる JSON は、そのままでは Google Sheets では扱えないし。めんどくさい!😩

そういうわけで、僕は集計用の Python スクリプトを作ったのでした。開発は ChatGPT に聞きながらだったので、全然簡単だった。最終的に出力される TSV を Google Sheets に貼って、所定のフォーマットに再整形してから記録シートに写してます👍

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

コメントを残す

回れ右の内輪差をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む