07-11-2024 08:14
07-11-2024 08:14
The fitbit dashboard webpage had several ways to export measurement data from the Aria. I can't find these export options on the phone app, which is an issue now that the webpage was shut down. I can display data on the phone app, but there is now way to export it as a file (and even copy pasting didn't really work). The general fitbit data export does not include the aria weight measurements (at least I couldn't find it in the export I made). Any advice would be appreciated. (And an explanation why google thinks it is a great idea to massively limit functionality by shutting down the perfectly fine dashboard website in favor of a limited and crappy phone app would be a bonus... )
Answered! Go to the Best Answer.
07-15-2024 09:30
07-15-2024 09:30
Here is my hacky quick code. You will have to have python installed to run it on your machine, and adjust the input directory.
https://drive.google.com/file/d/1kbobWR5JRmHdOqWWeahThtKAkzXE8a-6/view?usp=sharing
Sorry this took a bit - I found the option to paste directly only now (see below)....
import json
import glob
import csv
input_files_directory = """Takeout/Fitbit/Global Export Data/weight-*""" # This needs to be adjusted to point to the directory where the Fitbit weight data export files are in
output_file_name = """merged_weight_data.csv""" # This can be adjusted for the output file
expected_entries=('date', 'time', 'weight', 'bmi', 'fat', "logId", "source")
with open(output_file_name, "wt") as out:
outwriter = csv.writer(out, dialect='excel')
outwriter.writerow(expected_entries[:5])
for single_file in glob.glob(input_files_directory):
with open(single_file, 'r') as f:
print(single_file)
json_file = json.load(f)
for read in json_file:
for key in read.keys():
if not key in expected_entries:
raise(Exception("unexpected key", single_file, read, key))
if not ('date' in read.keys() and 'time' in read.keys() and 'weight' in read.keys()): # I am skipping any logs that don't have at least date / time and weight
continue
else:
if not 'bmi' in read.keys():
read['bmi']=""
if not 'fat' in read.keys():
read['fat']=""
outwriter.writerow((read['date'], read['time'], read['weight'], read['bmi'], read['fat']))
07-11-2024 20:04
07-11-2024 20:04
I'm looking for this as well. All I wanted to do is something simple like sort the weight so I could easily see the lowest and highest numbers. Can't find it so I'm guessing an export would be the easiest way. Nothing in the app. Dashboard is gone. Data export through google leaves me with some json files. Should be much easier.
07-12-2024 08:35
07-12-2024 08:35
If the data was in the json files, I would be happy to write / point you to an easy converter. But as far as I can tell it is not present in the export files at all - presumably because it is from a linked device, and not the 'fitbit' itself.
07-12-2024 08:50
07-12-2024 08:50
I found it in the json files! It was well hidden in the "Global Data Export" folder, which in addition to all kinds of stuff (altitude?) contains json files with monthly exports of weight measurements. I will work on a simple converter for myself that puts this into .csv format; can share if anyone is interested.
07-12-2024 10:22
07-12-2024 10:22
07-15-2024 09:30
07-15-2024 09:30
Here is my hacky quick code. You will have to have python installed to run it on your machine, and adjust the input directory.
https://drive.google.com/file/d/1kbobWR5JRmHdOqWWeahThtKAkzXE8a-6/view?usp=sharing
Sorry this took a bit - I found the option to paste directly only now (see below)....
import json
import glob
import csv
input_files_directory = """Takeout/Fitbit/Global Export Data/weight-*""" # This needs to be adjusted to point to the directory where the Fitbit weight data export files are in
output_file_name = """merged_weight_data.csv""" # This can be adjusted for the output file
expected_entries=('date', 'time', 'weight', 'bmi', 'fat', "logId", "source")
with open(output_file_name, "wt") as out:
outwriter = csv.writer(out, dialect='excel')
outwriter.writerow(expected_entries[:5])
for single_file in glob.glob(input_files_directory):
with open(single_file, 'r') as f:
print(single_file)
json_file = json.load(f)
for read in json_file:
for key in read.keys():
if not key in expected_entries:
raise(Exception("unexpected key", single_file, read, key))
if not ('date' in read.keys() and 'time' in read.keys() and 'weight' in read.keys()): # I am skipping any logs that don't have at least date / time and weight
continue
else:
if not 'bmi' in read.keys():
read['bmi']=""
if not 'fat' in read.keys():
read['fat']=""
outwriter.writerow((read['date'], read['time'], read['weight'], read['bmi'], read['fat']))
07-15-2024 11:16 - edited 07-15-2024 12:16
07-15-2024 11:16 - edited 07-15-2024 12:16
This worked perfectly! Thank you for putting this together. I've never messed with python but the script makes it look pretty handy. All I wanted to do was take my exported data from Fitbit and be able to sort it. Leaving me a csv file was all I needed. I now have the data I was looking for. Thanks again for doing this.