0
0

手持ちの体重csvファイルからgoogle fitへインポートする方法

Posted at

忘備録として書く。

背景

私はスマートフォンに毎日体重を記録しており、それをgoogle fitへと連携しようと考えた。

体重記録アプリから直接google fitへ出力する機能があればよいのだが、そのような機能はアプリにはなかった。

なので、アプリから体重を記録したcsvを出力させ、google fit のAPIを経由して、保存することにした。

手法

1:githubにエクスポートのためのスクリプトがあるので、それをクローンする。

git clone https://github.com/okainov/weight-csv-to-gfit

2:api keyとfitness apiのOAuth 2.0 クライアント IDの2つを作成し、ダウンロードする。

  • 両者ともgoogle cloudのアカウントが必要なので、作成しておく。
  • api key
    • google cloudの「APIとサービス」の「認証情報」の「APIキー」から、「+認証情報を作成」ボタンがあるのでそこから作成し、記録する。
  • OAuth 2.0 クライアント ID
    • Fitness APIページの「管理」の「認証情報」タブから、「+認証情報を作成」ボタンがあるのでそこから作成。jsonをclient_secret.jsonとして保存。

3:csvを加工。アプリからcsvをエクスポートし、以下のような形式に直す。

datetime,weight
2024-01-01 08:00:00,70.5kg
2024-01-02 08:00:00,71.2kg
2024-01-03 08:00:00,69.8kg

4:スクリプトから仮想環境構築する。venvコマンドがあるので、それを実行。また、コードのタイムゾーンを変更する。

# read_weight_csv.py
# TIME_ZONE = zoneinfo.gettz("Europe/Berlin")
TIME_ZONE = zoneinfo.gettz("Asia/Tokyo")

5:weight-csv-to-gfit/weightに以下のファイルを置く。

  • client_secret.json
    • これは先ほどのOAuth 2.0 クライアント IDで作成したファイル。
  • secrets.yml
    • project_idはclient_secret.jsonにあるclient_idから取得する。ただし、123456-何らかの文字列という形式なので、123456だけを書く。
fitness_api_key: "ここに先ほど作成したapi keyを置く。"
project_id: "上を参照。"

6:python import_weight_to_gfit.pyを実行。ブラウザでログイン画面が出るので全部OKを押す。

7:インポートに成功すれば、ターミナルでは以下のような出力が出る。google fitに反映されるまで1時間程度かかる。

その他

私は5年分のデータを一度に入れようとしたら、途中までのデータしか反映されていなかった。5カ月を単位にデータを分割して、インポートした。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0