Daily health metrics to a Google Sheet log

Log yesterday's steps, distance, calories, resting heart rate, sleep, and weight to a Google Sheet every morning so your history builds up over time.

Deterministic Code
Google HealthGoogle SheetsPersonal ProductivityData SyncDaily Digests
PromptCreate

Every morning at 7am, pull yesterday's health metrics from Google Health and append one row per day to a Google Sheets spreadsheet so it becomes a long-term personal health log I can chart or analyze however I like.

Fetch six metrics for the previous calendar day: steps, distance, total calories, resting heart rate, sleep duration, and weight.

Use the Daily Roll-Up Data Points operation for the aggregatable activity metrics (steps, distance, total-calories) over a single civil-day window covering yesterday. Use the List Data Points operation for daily-resting-heart-rate, sleep, and weight, filtered to yesterday's window, taking the latest reading when a metric has multiple entries and summing sleep session durations for the total.

Skip any metric that has no data for the day rather than failing the workflow. If I did not wear my tracker or did not weigh in, that column should be left blank in the appended row instead of aborting the run.

Once the metrics are gathered, call the Append Values operation on Google Sheets to append a single row to the target spreadsheet. Column order is date, steps, distance, total calories, resting heart rate, sleep duration, weight, matching the header row that already exists on the sheet.

Take the spreadsheet ID and sheet tab name as configurable inputs so I can point the workflow at whichever health log I set up. Use USER_ENTERED so numbers and the date get parsed the way I would type them into the UI.

What does this prompt do?

  • Every morning at 7am, pulls yesterday's steps, distance, calories, resting heart rate, sleep duration, and weight from your Google Health data.
  • Appends one new row per day to a Google Sheet you choose, with one column per metric.
  • Skips any metric that has no reading for the day, leaving that column blank instead of failing the whole run.
  • Builds a long-term personal health log you can chart, filter, or analyze however you like.

What do I need to use this?

  • A Google account with Fitbit, Pixel Watch, or other trackers syncing into Google Health
  • A Google Sheets spreadsheet with a header row (date, plus one column for each metric you want to track)

How can I customize it?

  • Change the run time or time zone so the daily row lines up with when your tracker finishes syncing.
  • Add or remove metrics: active minutes, floors, VO2 max, and blood oxygen all live in the same Google Health data.
  • Point the workflow at a different spreadsheet or sheet tab, or split metrics across multiple tabs (activity, sleep, body).

FAQs

Which devices does this work with?
Anything that syncs to Google Health: Fitbit, Pixel Watch, and third-party trackers connected through the Google Health platform. Google Health is the successor to the Fitbit Web API, so any Fitbit that was reporting there will keep working here.
What happens if I didn't wear my tracker one day?
The row still gets appended for that date, but any metric with no reading is left blank. The workflow does not fail on missing data — you just see empty cells for the metrics your tracker did not record.
Do I need to build the spreadsheet before turning this on?
Yes. Create a spreadsheet with a header row (Date, Steps, Distance, Total Calories, Resting Heart Rate, Sleep, Weight) and point the workflow at the spreadsheet ID and tab name. From then on, one row per day gets appended automatically.
Can I add other metrics like active minutes or blood oxygen?
Yes. Google Health tracks a wide range of metrics — active minutes, active zone minutes, floors, VO2 max, heart rate variability, blood oxygen, and more. Add the metric to the spreadsheet header, add a matching step to the workflow, and it will start logging.
How far back does the history go?
The log starts fresh the day you turn the workflow on and grows by one row per day. If you want history from before then, do a one-time backfill by exporting past data from Google Health and pasting it into the sheet.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
LinkedIn Ads budget pacing dashboard for every client account

See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.

LinkedIn Ads
Google Sheets
Slack Bot
App

Turn your wearable data into a spreadsheet you actually own.

Build a permanent, portable record of your health metrics instead of relying on the app's built-in charts.