Skip to content
Keboola Docs

Send a table to Google Sheets

Send the table you just built out of Keboola into a Google Sheet using the Google Sheets data destination connector.

How-to Going further about 10 minutes

Whoever asked the question will look in a spreadsheet, not in Keboola. This page delivers a Storage table to a Google Sheet, with the same mechanism that sends data to a warehouse, a BI tool, or a CRM.

Where you are: the table you want to send is in Storage. When you finish: the same rows in a spreadsheet, refreshed on every run.

Two ways to do this, one page — they are alternatives, not steps. Prompt is what you paste into Kai; UI is the same task click by click, for when you want to see where each setting lives. Either tab reaches the same result.

Kai asks before it changes anything: expect one approval dialog per object it creates, showing the exact configuration it is about to write. Questions that only read do not ask. If confirming each one gets tiring, pre-approve tools in tool permissions. The chat's plan mode button is a different thing: Kai writes the steps down and asks you to approve the plan before it starts — and then still asks for each change. Use it when you want to read the plan first, not to save clicks.

One thing stays yours either way: the Google consent screen, which lives in your own account, so no assistant can click it for you.

If a step builds something other than what this page describes, say so in the same chat — it edits what it made. Nothing here is one-way.

Two tabs here, not the three the main path uses: the authorization is a browser consent screen, so a terminal cannot start this task. Once the configuration exists and is authorized, kbagent drives it like any other component — config row-create to add a sheet, job run --wait to send the table.

The configuration and the Google authorization below are yours either way; the tabs pick up afterwards.

Before you start

  • A Keboola project. Get a project covers creating or joining one — the Free Plan covers this guide.
  • A Google account you can sign in with. The consent screen lives in your own account, so it is the one thing no assistant can click for you.
  • The table you want to deliver, in Storage: staffing_outlook from Transform data if you are following the guide.

Getting data out is handled by data destination connectors, the mirror image of the data source connectors you loaded with. The pattern is always the same: authorize the target, pick the Storage table, say where it goes, run it. Sending processed data back into the operational systems it came from is often called reverse ETL; in Keboola it is just another component in your flow.

Google Sheets is the easiest destination to try. The full catalogue covers databases, BI tools, and cloud storage.

  1. Open Components and search for Sheets. Five results come back, and the first two are Google Sheets — Data Source and Google Sheets — Data Destination: near-identical names, opposite jobs. Pick the Data Destination one (component ID keboola.wr-google-sheets). Picking the data source by mistake makes the rest of this page impossible.

    Screenshot - Search for the Google Sheets destination

  2. Click Add Component (Create Configuration on the card once the component already has configurations), then Connect To My Data. It is the only button here, unlike the HTTP connector in Get your data in, which also offered demo data.

    Screenshot - Connect to my data

  3. Name the configuration Boolabean outlook to Sheets, add a description, and click Create Configuration.

    Screenshot - Name the configuration

  1. Authorize the account you want to write into.

    Screenshot - Authorize a Google account

  2. Name the authorization and click Sign in with Google. Use external authorization instead if a colleague, not you, owns the target account; Keboola sends them a link and never sees their credentials.

    Screenshot - Sign in with Google

  3. Click Allow.

    Screenshot - Grant access

The authorization belongs to this configuration. Keboola stores component secrets as encrypted configuration parameters; there is no decryption API, so the credentials are never readable back out of the configuration.

Kai configures data destinations as well as data sources. The configuration and the authorization above are yours either way; that consent screen is in your own Google account, not something an assistant can click through. Everything after it, Kai can do: open Kai Agent in the top bar and hand it over.

Prompt
In my "Boolabean outlook to Sheets" configuration, write
out.c-Boolabean-staffing-outlook.staffing_outlook to a new spreadsheet called
"Boolabean staffing outlook", into a sheet named staffing_outlook, set to update rows rather
than append. Then run it.

Naming all three matters: the flow puts this on a daily schedule, so an appending sheet grows by 42 rows a day and the manager reading it sees last week’s forecast above this week’s, and the check at the end of this tab looks for that spreadsheet name.

Check: the sheet holds every row of staffing_outlook, 42 of them, computed columns included, exactly as in Run it and check the result. If it does not, switch to the UI tab and edit the sheet Kai created (its spreadsheet and sheet settings, steps 9 and 10), since everything Kai set is editable there.

Coming from the Prompt tab? The run already happened; the prompt asked for it. Start at step 12.

  1. Click Run Component.

  2. When the job finishes, click the spreadsheet name, Boolabean staffing outlook, to open it in Google Drive.

    Screenshot - Open the spreadsheet

The sheet should hold every row of staffing_outlook: 42 rows, one per café per forecast day, with the columns that did not exist in any of the files you started with, expected_units, rostered_staff, expected_units_per_person and short_handed. Sort it by expected_units_per_person descending and the café and day the guide is about sit at the top, readable by anyone with the link. That is the whole pipeline, end to end.

  • The job fails with a permission error. The authorization expired or was revoked in the Google account. Re-authorize the configuration; the sheet selection survives.
  • The spreadsheet stays empty. The table was saved in the configuration but the component has not run since: click Run Component. If it did run, check in Jobs whether the source table had any rows.
  • Only some columns arrive. The sheet was created against an older version of the table. Delete the sheet from the configuration and add it again so the column list is rebuilt.
  • You cannot open the spreadsheet. It lives in the authorized Google account, not yours; if you authorized a colleague’s account, ask them to share it.
  • You want the delivery checked against the source. Kai can read both sides: Read the last Google Sheets destination job, tell me whether it succeeded, and compare what it wrote with the row count of out.c-Boolabean-staffing-outlook.staffing_outlook.
Ask Kai

Hi, I'm Kai — Keboola's AI assistant for the docs. Ask me anything and I'll answer from the documentation and cite the pages I use.

Kai is an AI and can make mistakes. Check the sources it links.