Skip to content

Docs/Connectors

Google Sheets

The rows of the spreadsheets you list, one record type per tab, keyed by each tab's header row.

The google-sheets connector reads the spreadsheets you name. Every tab becomes its own record type, and the first row of a tab supplies the column names.

Connector name google-sheets
Products Records
Credentials The portal's Connect button, or a Google OAuth client and a refresh token
Scopes spreadsheets.readonly and drive.metadata.readonly
Status Preview: tested against Google's documented responses, not yet on a live account

What it pulls

One record per non-empty row of each grid tab, under the type <spreadsheet title>__<tab> in lower case (client_billing_2026__invoices). Each record keeps the row number in _row, the spreadsheet id in _spreadsheet_id and the tab name in _sheet. Empty header cells become column_<n>; a repeated header gets _2, _3. Chart and object tabs are skipped.

Values come as Sheets stores them: numbers as numbers, dates as the text you see.

Credentials

Use an OAuth client with both scopes and give the SDK clientId, clientSecret and refreshToken. The account must be able to view each spreadsheet.

Or skip the tokens: click Connect next to Google Sheets in the portal (Settings → Connected systems), then run datayield connect google-sheets --broker -o spreadsheetIds=....

Connect

bash
datayield connect google-sheets -o spreadsheetIds=1AbC...,1XyZ... \
  -o clientId=<client id> -o clientSecret=env:GOOGLE_CLIENT_SECRET -o refreshToken=env:GOOGLE_REFRESH_TOKEN

Options

Option Required Meaning
spreadsheetIds yes Spreadsheet ids, separated by commas: the long part of the URL between /d/ and /edit
clientId, clientSecret, refreshToken yes, or accessToken The OAuth client and a refresh token
accessToken instead of the above A current access token, for a one-off run. It expires within an hour.

New records on each run

A spreadsheet that has not changed since the last successful run is skipped. A changed one is sent whole, because Sheets records no change time per row; match rows across months on _row or a column of your own.

Google allows 60 reads a minute per user. The SDK stays under that and waits when Google asks it to.