Read, upsert and format spreadsheet data from any Windmill script, flow or app.
Set up in 2 steps
Connect from the Resources page
Open Resources, click Add a resource/API and pick gsheets under Instance-configured OAuth APIs. Click Connect and sign in with the Google account that owns the spreadsheets, then name the resource and save it.
Run your first script
Fork any script below and point it at a sheet. The spreadsheet id is the long segment in its URL, between /d/ and /edit.
Scripts
Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.
Upsert Row
Update Cell
Merge Cells
List Spreadsheets
Insert Rows or Columns
Get Cell
Format Cells
Delete Rows
Add Column
New Row
Update Row
Find Rows
Get Spreadsheet
Add Rows
Delete Worksheet
Clear All Values
Create Worksheet
Clear Row
Get Values in Range
List Worksheets
Copy Worksheet
Create Spreadsheet
Update Values
Clear Columns
Get Values
Trigger flows from Google Sheets
Google Sheets is not only a destination. These inbound paths are supported today.
New row (scheduled poll)
The New Row trigger script polls a worksheet and returns the rows appended since its last run. It polls because Google has no row-level push for Sheets. To run it, open a flow, add a trigger and choose Scheduled Poll, then pick the trigger script and an interval. The steps after it run once per new item, and each flow keeps its own cursor.
Resource type
The shape of the credential every script on this page expects.
gsheets
View raw schema →| Field | Type | Required | What it is |
|---|---|---|---|
| token | string | Yes | The OAuth token, refreshed if necessary |
Questions
Which spreadsheets can Windmill reach?
Every spreadsheet the connected account can open. The default connection asks for the spreadsheets scope, which covers reading and writing but nothing else in Drive. List Spreadsheets searches Drive, so it also needs a Drive scope such as drive.metadata.readonly ticked when you connect.
Can I create the resource by hand instead of connecting?
The resource is a single token field, but Google's access tokens last about an hour and only the OAuth flow returns the refresh token that renews them, which is why this page has no CLI lane.
There is no Connect button on my instance
An instance admin has to add a Google OAuth client once, in Instance settings → Auth/OAuth/SAML → OAuth. Until then gsheets is missing from the Instance-configured OAuth APIs list.