Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Google Sheets

Connect one Google Sheets spreadsheet to Fresco BI. Each sheet (tab) of the spreadsheet is listed as a table, and Fresco BI imports the sheets you pick into Data Tables. Fresco BI only reads.

Feature Supported
Import Yes
DirectQuery No
SSL/TLS Always on and verified
SSH tunnel No
Cloud Yes
On-premises (via Gateway) No
  • A Google account that can open the spreadsheet (owner, editor or viewer).
  • The spreadsheet’s ID.
  • Google sign-in must be set up on your Fresco BI server. If it is not, the connector cannot be used; ask your Fresco BI administrator.

Google Sheets does not use a database user. You sign in with Google instead, and Fresco BI reads the spreadsheet as that Google account:

  1. When you add the source, Fresco BI sends you to Google’s sign-in page.
  2. Pick the Google account that can open the spreadsheet.
  3. Allow read access to Google Sheets. Fresco BI asks for one permission only: read-only access to your spreadsheets (spreadsheets.readonly). It cannot change, create or delete any spreadsheet.

If you do not allow that permission, the sign-in is refused with “Allow read access to Google Sheets.” and nothing is saved.

To keep access narrow, you can use a separate Google account that has only Viewer access to the spreadsheet: share the spreadsheet with that account (Share in Google Sheets, role Viewer) and sign in with it.

To remove access later, remove Fresco BI from the account’s third-party access in your Google Account settings.

Nothing to open. Fresco BI calls only Google’s own API hosts (sheets.googleapis.com and oauth2.googleapis.com) over verified TLS. There is no SSH tunnel and no On-premises (Gateway) option for Google Sheets.

The web form for Google Sheets is not available yet. The source takes these settings:

  1. Spreadsheet ID: the part of the spreadsheet URL between /d/ and /edit. For https://docs.google.com/spreadsheets/d/1AbC.../edit, the ID is 1AbC.... It is 25 to 128 letters, digits, - or _. Fresco BI never takes a full URL.
  2. Header row: the row that holds the column names, 0 to 100 (default 1). Data starts on the row below it; rows above it are skipped. With 0, there is no header row and the columns are named Column 1, Column 2 and so on.
  3. Sample rows: how many rows are read to guess each column’s type, 100 to 1,000 (default 1,000).

After sign-in, the source shows which Google account it is connected as. The sign-in token is stored encrypted on the server and is never shown.

  • Empty header cells become Column N; repeated names get _2, _3.
  • Column types (whole number, decimal, true/false, date, date and time, time, text) are guessed from the sample rows and the cell number formats.
  • Error cells such as #N/A or #REF! read as blank.
  • A sheet can have at most 1,000 columns and 5,000,000 cells (rows × columns).
  • Fresco BI sends at most one request per second per source and retries when Google says the quota is used up.
  • The server rejected the user name or password. Google refused the sign-in token, for example because access was removed in the Google Account settings. Sign in with Google again.
  • The database user cannot read this object. The signed-in Google account cannot open this spreadsheet. Share it with that account, or sign in with an account that has access.
  • The database or object was not found on the server. Check the spreadsheet ID, and that the sheet (tab) was not renamed or deleted.
  • A size or concurrent-connection limit was exceeded. The sheet has more than 1,000 columns or 5,000,000 cells, or Google’s request quota was used up. Split the sheet, or try again later.
  • The source table no longer matches the data table. A column the Data Table reads is gone from the sheet’s header row (renamed or deleted). Put the column name back, or check the header row setting.
  • No connection could be opened to this host and port. Check the host, the port, and that the firewall allows Fresco BI’s IP. Google answered with a server error. Try again later.
  • The server did not answer in time. Usually a firewall that drops packets, or a wrong host or port. Google was slow to answer; try again.