Google Sheets

Productivity OAuth Windmill docs

Read, upsert and format spreadsheet data from any Windmill script, flow or app.

Set up in 2 steps

1

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.

2

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.

Submit a script →

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.

FieldTypeRequiredWhat it is
tokenstringYesThe 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.