Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Aria weight data export from phone app

ANSWERED
Replies are disabled for this topic. Start a new one or visit our Help Center.

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... )

Best Answer
1 BEST ANSWER

Accepted Solutions

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']))
        
                        

 

View best answer in original post

Best Answer
0 Votes
6 REPLIES 6

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.

Best Answer

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. 

Best Answer
0 Votes

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. 

Best Answer
0 Votes
This would be great.
Best Answer
0 Votes

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']))
        
                        

 

Best Answer
0 Votes

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.

Best Answer