Export Google Fit Daily Steps, Weight and Distance to a Google Sheet
Google Fit is a great way to keep track of your daily step count without needing to carry a Fitbit or other dedicated tracker. It's not easy to get that data out though, as far as I can tell the only way is Google Takeout which is not made for automation. Luckily there is an API and you can do almost anything with Google Sheets.
If you're looking to export your step count, weight and distance this post has everything you need, just follow the instructions below to get your spreadsheet up and running. This is also a good primer on using OAuth2 with Google Apps Script and should be a decent starting point for a more complex Google Fit integration. If you have any questions or feedback please leave a comment below.
To get started you need a Google Sheet, an apps script project attached to the sheet and a Google API Project that will provide access to the Fitness API. That might sound intimidating but it should only take a few minutes to get everything up and running.
In Google Drive create a new spreadsheet and call it whatever you like. Rename the first tab to 'Metrics'. Enter 'Date' in cell A1, 'Steps' in B1, 'Weight' in C1 and 'Distance' in D1. To grab history as well create another tab called 'History' with the same headers. Next select 'Script editor...' from the Tools menu which will open a new apps script project.
Give the apps script project a name and then select 'Libraries...' from the Resources menu. Next to 'Add a library' enter 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF and click Add. This will find the Google OAuth2 library. Choose the most recent version (24 at the time of writing) and click Save. Then select 'Project properties' from the File menu and make a note of the Script ID (a long series of letters and numbers).
Open the Google API Console. Create a new project and name it something like 'Google Fit Sheet'. From the Dashboard click Enabled APIs and services and find and select the Fitness API. Then go to Credentials and create an OAuth Client ID. You'll be asked to create a consent screen, the only field you need to enter is the product name (i.e. 'My Fit App'). Then choose Web Application as the application type. You need to set the name and the authorized redirect URL. The redirect URL is https://script.google.com/macros/d/{SCRIPTID}/usercallback replacing {SCRIPTID} with the actual Script ID you made a note of above. After adding this make a note of the Client ID and Client Secret.
Go back to the apps script project and paste the code below into the Code.gs window:
Right at the top of the code there are spaces to enter the Client ID and Client Secret from the API Console. Enter these and save the project.
Switch back to your Google Sheet and reload. After reloading there will be a Google Fit menu item. First select Authorize... You'll get a screen to authorize the script and then a sidebar with a link. Click the link to authorize the script to access your Google Fit data. You can then close the sidebar and select Get Metrics for Yesterday from the Google Fit menu. You should see a new row added to the spreadsheet with yesterday's date and fitness data.
The final step is to automate pulling in the data. Go back to the apps script project and select Current project's triggers from the Edit menu. Add a trigger to run getMetrics() as a time driven day timer - I recommend between 5 and 6am. You can also click notifications to add an email alert if anything goes wrong, like your Google Fit authorization expiring (in which case you just need to come back and authorize from the Google Fit menu again.
At this point you're all set. Every day the spreadsheet will automatically update with your step count from the day before. You can add charts, moving averages, export to other systems, pull in your weight or BMI, etc. I want to add a seven day moving average step count to this blog somewhere as a semi-public motivational tool... watch this space.
Note that weight will be blank in the spreadsheet for days with no weight data. Google Fit doesn't return the last known weight, only the known value for days where an update was recorded.
If you are looking to extend this sample to other data types then this API explorer page is very helpful for finding data types that the API documentation doesn't list.
A couple of times working on this script I got my authorization in a bad state and started getting a 400 error response from the API. If this happens run your Google Fit app, click the Profile icon at the bottom and then the Settings icon at the top right. Click Manage connected apps and then disconnect the script from Google Fit. Finally run the Reset Settings option from the menu in the sheet and then authorize again.
I updated this post on Jan 21, 2019 to extend the sample to handle weight and distance as well as steps. I also improved the history function to handle many days in one API call rather than a quick hack I added earlier that pulled a day at a time. I'd recommend using the code above rather than anything included in comments below (at least comments before this update).
More Google Apps Script Projects
- Get an email when your security camera sees something new (Apps Script + Cloud Vision)
- Get an email if your site stops being mobile friendly (no longer available)
- Email Alerts for new Referers in Google Analytics using Apps Script
- Animation of a year of Global Cloud Cover
- Control LIFX WiFi light bulbs from Google Apps Script
- How to backup Google Photos to Google Drive automatically after July 2019 with Apps Script
- Using the Todoist API to set a due date on the Alexa integration to-do list (with Apps Script)
- Automate Google PageSpeed Insights and Core Web Vitals Logging with Apps Script
- Using the Azure Monitor REST API from Google Apps Script
- Monitor page index status with Google Sheets, Apps Script and the Google Search Console API
(Published to the Fediverse as: Export Google Fit Daily Steps, Weight and Distance to a Google Sheet #code #software #fit #appsscript #google #sheets #drive Detailed instructions for setting up an automatic daily export of your step count from Google Fit to a Google Sheet. Uses Google Sheets, Apps Script and the Google Fitness API. )
I'm not afraid of Google
At BGR Chris Smith writes about Google's prodigious data collection:
"But that doesn’t change the fact that Google collects an incredible amount of data about you, especially from that device you use most, your Android phone"
And so I was amused as a Google Fi subscriber on a Pixel XL running Google Chrome and signed into my Google Account that the ad in the middle of the article was for Project Fi. If Google can't help paying BGR under these set of circumstances then we're some way off from the adtech singularity.
Related Posts
- Doing news right with Feedly and Google News
- Chiroopractoor
- Leaving the Nest
- Facebook shouldn't own your social graph
- Leaving Chrome
(Published to the Fediverse as: I'm not afraid of Google #etc #google Google advertises Project Fi to a Project Fi subscriber signed into Chrome on a Pixel XL )
News: Facebook defends its simple 2 question survey on the trustworthiness of news publishers
Facebook defends its simple 2 question survey on the trustworthiness of news publishers
What if everyone recognizes a news source and say half of them trust it but it isn't true?
Related Posts
Coho Salmon in Lagunitas Creek
A five mile guided hike from Samuel P. Taylor State Park to the Leo T Cronin Fish Viewing Area along Lagunitas Creek and back again to spot spawning Coho Salmon. The hike was a program offered by Turtle Island and the specific route will vary based on where the salmon are currently active. Having done this once I think I could spot them again without assistance but it's well worth donating to get the full naturalist led experience.
Hike starts at 38.0244751,-122.7291936 (Google Earth).
Related Posts
- Adobe Creek
- Summit Lake to Echo Lake in Lassen
- Presidio Loop Hike
- San Pedro Valley Park Waterfall Loop
- Hill 88
(Hike Map)
(Published to the Fediverse as: Coho Salmon in Lagunitas Creek #hike #lagunitascreek Finding spawning Coho Salmon in Lagunitas Creek with Turtle Island naturalists, a hike from Samuel P. Taylor State Park to the Leo T Cronin fish viewing area. )
Banner Chat
I'm hoping that a chat banner notification is for really great chats only and not some subtle distinction between chat notification types that I can't figure out even after some moderate to heavy googling. If anyone knows seriously please tell me.
Related Posts
- I Love Email
- More Colors
- Windows 11 Broken Notifications
- I just want to get rid of Windows 10 Notifications with one click
- Please fix phone spam Google!
(Published to the Fediverse as: Banner Chat #etc #skype What is the difference between chat notifications and chat banner notifications in Skype? )
Batteries to Bluffs
Batteries to Bluffs trail with stop at Marshall's Beach, extended by starting at Immigrant Point and then continuing on to the Golden Gate Bridge.
Hike starts at 37.7962571,-122.4780047 (Google Earth).
Related Posts
(Hike Map)
(Published to the Fediverse as: Batteries to Bluffs #hike #presidio #ggb Hike from Immigrant Point to the Golden Gate Bridge via the Batteries to Bluffs trail and Marshall Beach in The Presidio of San Francisco )
Another Butterfly at the California Academy of Sciences
A butterfly feasts on an orange slice at the California Academy of Sciences in San Francisco.
Related Posts
- Butterfly at California Academy of Sciences
- Unidentified Butterfly
- Hummingbird
- Butterfly
- Wall of Skulls
(Published to the Fediverse as: Another Butterfly at the California Academy of Sciences #photo #butterfly Photo of a Butterfly feeding from an orange slice at the California Academy of Sciences in San Francisco. )
Painted Lady Butterflies Eclosing
Four Painted Lady butterflies eclose (emerge) from their chrysalises. The video has a timelapse and then realtime video of each butterfly in turn.
Related Posts
- Butterfly
- Butterfly at California Academy of Sciences
- Pipevine Swallowtail Caterpillar
- Moth
- Another Butterfly at the California Academy of Sciences
(Published to the Fediverse as: Painted Lady Butterflies Eclosing #etc #video #butterfly #chrysalis #eclose Timelapse and realtime video of four Painted Lady butterflies eclosing (emerging) from their chrysalises )