Skip to main content

Google Sheets

info

Import your data from any source directly into your Google Sheets file.

Source Setup Guide​

Step 1​

Click banner in the Edit Destination form to the left.

Step 2​

Follow the authentication flow (OAuth) on Google’s website to grant Extract the required permissions.

Step 3​

Confirm you can see your email and profile picture, and that the destination is Connected.

Connection Setup Guide​

Once you connected Google Sheets to a source, you will also need to configure:

  • Spreadsheet Link - Create a new spreadsheet and paste its URL.
  • Connection Pull Schedule - Determines how frequently data is extracted from the source.
  • Schema Migration Policy - Controls how Extract will handle schema changes from the source.

Data Contract Information​

This destination supports data contracts by automatically reconciling schema changes from your source into the target Google Sheet:

  • Add column: when a new field is added upstream, a new column is appended to the sheet header.
  • Rename column: when a field is renamed upstream, the corresponding sheet column header is renamed.
  • Deprecate (delete) column: when a field is removed upstream, the column is not deleted. Instead, it is renamed to deprecated_\<original_name\> to preserve existing data.

Google Sheets cells are not strongly typed. This destination writes values using the following rules:

  • null values are written as an empty string.
  • boolean, number, and string values are written as-is except for large integers (see below).
  • array and object values are serialized to a JSON string.

Large integer handling​

Google Sheets stores numeric cells as IEEE-754 double-precision floats, which cannot exactly represent integers outside the safe range.

To avoid precision loss, integers outside the safe range are written as text (string) instead of a numeric cell:

  • Greater than 9007199254740991 (2^53 - 1)
  • Less than -9007199254740991

Additional Information​

info
  • Handling Multiple Streams

    • Multiple streams are written to separate tabs within the same spreadsheet.
  • Row / Cell Limit Handling

    • Google Sheets has a hard limit of 10,000,000 cells per spreadsheet.
    • When the spreadsheet reaches this limit (or any other Sheets row/cell limitation), the connection will fail. Best practice is to delete unused rows/columns/sheets or create a new connection (for example, pointing to a new spreadsheet).
  • Value and Type Handling

    • Column names are inferred from the first row (headers).
    • Values are written in a Sheets-compatible format:
      • null values are written as an empty string.
      • Arrays and objects are serialized to a JSON string.
      • Numbers outside Google Sheets’ safe integer range (IEEE-754) are written as text to avoid precision loss.
    • Types are inferred from the sheet’s formatting and sample values:
      • DATE and DATE_TIME formatted columns are represented as strings with a date/date-time format when the format can be parsed.
      • If a date/date-time format cannot be parsed, the column will be treated as a plain string.
      • NUMBER formatted columns are represented as numbers.
      • All other columns default to string.
    • Manual modifications to values or formatting may lead to inconsistencies.
  • Impact of Spreadsheet Modifications

    • If you delete a column, alter the spreadsheet structure, or remove primary keys, the connection may fail.
  • Supported Load Modes

    • Full Refresh: Append/Replace
    • Incremental Load: Append

Troubleshooting​

If your sync fails with an error indicating that the spreadsheet has reached a cell limit (often referencing 10,000,000 cells), Google Sheets will not accept additional writes.

How to fix

  • Delete unused rows/columns in the destination spreadsheet (including in other tabs/sheets within the same spreadsheet).
  • Remove unused sheets (tabs) from the spreadsheet if they aren’t needed.
  • Select a different spreadsheet (or create a new one) with enough capacity.
  • Then run the connection again.