send sensor data from Home Assistant to a spreadsheet
The Home Assistant dashboard (aka ‘Lovelace’) is very good at displaying live sensor data as well as historic sensor data. The display below shows a ‘just now’ reading of the sun and also a continuous line graph of ‘sun azimuth’ over the last few days.
However, to understand my heating oil usage, I wanted to record the daily oil level over a longer period of time. (My sensor hardware is described here: oil tank level sensor)
Firstly I wanted to be able to predict when I’d need to order more heating oil. Secondly, I wondered whether my oil use could be related to the outside temperatures. So I decided that the thing to do was to send daily level and temperature readings to a spreadsheet to analyse later. This page describes how I sent data from my Home Assistant sensors called ‘oil_level’ and ‘weather temperature’ in a Google Sheet.


1. Get IFTTT to put the data I send into a Google sheet
Go to IFTTT, sign in and add the Webhooks service and the Google Sheets service. Follow this link if you need the official docs for Home Assistant IFTTT
2. Get a ‘key’ from the Webhooks service
Go to IFTTT > My services > Webhooks > settings and copy the key from the webhooks URL.

3. Add the key (the string of characters found in the URL) to your Home Assistant configuration.yaml
ifttt: key: 6XASTRINGOFCHARACTERS # key: !secret iftttkey
4: Create an IFTTT applet ‘IF Webhook THEN Google Sheets’
In the Google Sheets section of the IFTTT applet set the name and folder for the spreadsheet where you’ll store the data as follows:

5: Write an ‘automation’ as a yaml file
In Home Assistant create an automation that triggers IFTTT once a day and sends the sensor data to the spreadsheet. Don’t use the built-in automation editor – instead use a text editor to create a file called send_oil_level.yaml and saved in the Hassio config folder called ‘automations’. I suggest you copy and paste this editing just the bold text. The event name below must match the name above at IFTTT
id: '12399999' # the id must be unique - the alias and description are for your reference alias: oil_level_spreadsheet description: oil daily readings in oil_level.yaml # I want a daily oil level reading so the trigger I use is a time trigger: at: 06:30:00 platform: time # The condition offers ways to limit when we'll send oil sensor data. eg don't bother in summer condition: [] # The ifttt trigger service requires a data template. "event" and "value1" etc ought to match what your IFTTT app is expecting to receive. I suggest you copy and paste this. action: data_template: { "event": "oil_level", "value1": "{{ states('sensor.oil_level')}}", "value2": "{{ states('sensor.weather_temperature')}}", "value3": "{{ states('sensor.loose_temperature')}}" } service: ifttt.trigger
To recap: this code is in a text file named send_oil_level.yaml which is in the Hassio config folder called ‘automations’. Check also that your configuration file named configuration.yaml has the following sections:
automation: !include automations.yaml automation old: !include_dir_merge_list automations
6. Cross fingers and go see your spreadsheet

8. Find a way to split the date time March 4, 2020 at 07:15AM
Columns A to E of the spreadsheet need to be left for IFTTT and Google Sheets to update whenever the automation runs. You can format them with colours or whatever – the bottom line stores the incoming data.
Use Column E rightwards when you want to do your calculations. Below I’ve put a split function in cell H2 and copied this down the column. The split function will break up a string of text that has a obvious separator. The obvious separator in ‘March 4, 2020 at 07:15AM’ is a space.
That’s why cell H2 has =split(A2, ” “) The formula sucks out the spaces from what’s in A2 and puts the individual elements in columns to the right of it. Pretty cool function that one.

Hi! I would like to do this in my Home Assistant, but I have tried this and doesn’t work. Google’s driver spreadsheet does not change. I think could be the file yaml, some spaces, or formatting issues. Could you share your file or send a print of your yaml files? Thank you for share.
Sorry to hear this Jose. It is frustrating not being able to locate the cause of the failure when there are so many places to fail.
Getting the code below correct took ages – perhaps this is where it’s gone wrong. Setting up the webhooks part was hard but it was the easier bit!
This code is the entire content of a plain text file called oil_level.yaml which resides in the automations folder. I found that this automation code would not work in the automations tool.
– id: ‘12399999’
alias: oil_level_spreadsheet
description: daily readings in oil_level.yaml
trigger:
– at: “23:55:00”
platform: time
condition: []
action:
– data_template: { “event”: “oil_level”, “value1”: “{{ states(‘sensor.oil_level’)}}”, “value2”: “{{ states(‘sensor.temperature_weather’)}}”, “value3”: “{{ states(‘sensor.power_today’)}}” }
service: ifttt.trigger
Hello Roger, thanks allot for this tutorial 🙂
Runs perfect for me, the only thing I’m missing is already on the spreadsheet is formatting the date as you have in date split and if its possible the time in 24h
Thanks for writing in Daniel. Nice puzzle. I’ve added a paragraph (8) to the post illustrating the split function. As you’ll see the time is in column L. Without any additional number formatting it reads as a 24 hour clock so I hope that’s a result.
https://www.rogerfrost.com/send-sensor-data-from-home-assistant-to-a-spreadsheet/
Hi,
thank you for your work. Is it possible to retrieve data from Google Home to Google Sheets without Raspberry or similar? If I have undertand correctly your method require hardware. Am I wrong?
Best regards
Luca
Thank you for writing in. I wouldn’t say the data in Google Home isn’t retrievable as ‘developers.google.com’ offers a way that perhaps someone is trying. Please lets know.
But yes there is a ‘non-hardware’ way for you. It requires installing Home Assistant on a virtual machine on your PC, even an old PC. In this way any activity or temperature reading (etc) is recorded by HA or sent to a spreadsheet as on this page – instead of disappearing into Google Home.
The link below, and some Youtubes will guide you through that. Almost all the data I’m using now comes from a Home Assistant. My version runs on a Raspberry Pi connected by ethernet to the broadband router. Yours can run on a PC just as well or better … with the downside of it being ‘off’ when you PC is ‘off’.
All best,
RF
https://www.home-assistant.io/installation/