New ESP32-S3 development board is now available → /products
</>OceanLabz
Beginner24 Apr 2025 · 2 min read

Sending Data from ESP32 to Google Sheets (IoT Data Logger Tutorial)

## Introduction Logging sensor data to the cloud is one of the most common uses of ESP32. In this tutorial, you'll learn how to send data from an ESP32 to a Google Sheet in real-time using Google Apps Script and a simple HTTP POST request. ## What You’ll Need - ESP32 Board - Arduino IDE - Wi-Fi Netw

Sending Data from ESP32 to Google Sheets (IoT Data Logger Tutorial)

#Introduction

Logging sensor data to the cloud is one of the most common uses of ESP32. In this tutorial, you'll learn how to send data from an ESP32 to a Google Sheet in real-time using Google Apps Script and a simple HTTP POST request.

#What You’ll Need

  • ESP32 Board
  • Arduino IDE
  • Wi-Fi Network
  • Google Account (for Sheets & Script)
  • (Optional) Sensor (e.g., DHT11, DHT22, LDR)

#Step 1: Create Your Google Sheet

  • Go to Google Sheets
  • Create a new sheet and name it, e.g., ESP32_Data_Logger
  • In Row 1, add headers like:Timestamp, Temperature, Humidity

#Step 2: Create a Google Apps Script

In your Google Sheet, click Extensions > Apps Script

Replace the default code with this script:

function doPost(e) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = JSON.parse(e.postData.contents); sheet.appendRow([new Date(), data.temp, data.hum]); return ContentService.createTextOutput("Success"); }

Save the script and name it ESP32 Logger

Click Deploy > New deployment

Select "Web App", name it, and set:

  • Execute as: Me
  • Who has access: Anyone

Click Deploy and Authorize the permissions

Copy the Web App URL (you'll need it for ESP32)

#Step 3: ESP32 Arduino Code

#1. Replace WiFi Credentials

Find these two lines in your code:

const char* ssid = "Your_WiFi_Name"; const char* password = "Your_WiFi_Password";

Replace "Your_WiFi_Name" and "Your_WiFi_Password" with your actual WiFi network name and password.

#2. Replace Google Script URL

Find this line:

const char* scriptURL = "https://script.google.com/macros/s/YOUR\_SCRIPT\_ID/exec";

Replace the whole URL with your real Web App URL from Google Apps Script:

#include <WiFi.h> #include <HTTPClient.h>

// Replace with your WiFi and Web App details const char* ssid = "Your_WiFi_Name"; const char* password = "Your_WiFi_Password"; const char* scriptURL = "https://script.google.com/macros/s/YOUR\_SCRIPT\_ID/exec";

void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting..."); } Serial.println("Connected to WiFi"); }

void loop() { if (WiFi.status() == WL_CONNECTED) { HTTPClient http;

[object Promise]

} else { Serial.println("WiFi Disconnected"); }

delay(10000); // Send data every 10 seconds }

#Expected Output

  • Your ESP32 will connect to WiFi.
  • Every 10 seconds, it sends temperature & humidity data.
  • Google Sheet automatically updates with a timestamp.

#Security Tips

  • Use HTTPS in the script URL.
  • Restrict access using Google Apps Script token/authentication (for advanced users).
  • Avoid hardcoding Wi-Fi passwords in production.

#Why Use Google Sheets?

  • Free & cloud-based
  • Easy to visualize and export data
  • Accessible from any device

#Wrap Up

You've successfully built a basic IoT data logger using ESP32 and Google Sheets. You can now expand this by:

  • Logging real sensor data (DHT11, MQ2, etc.)
  • Adding charts in Sheets
  • Automating email alerts when thresholds are crossed.