---
title: "How to connect BigQuery to Google Sheets: three ways"
canonical: "https://www.owox.com/blog/articles/bigquery-reports-in-google-sheets"
updated: "2026-10-11"
---

# How to connect BigQuery to Google Sheets: three ways

There are three ways to get BigQuery data into Google Sheets: save query results from the console once, connect a table with Connected Sheets, or publish the query as a Data Mart and deliver it to a sheet on a schedule. This guide walks through each and says which one fits a one-off look, a self-serve analysis and a recurring report.

[Google BigQuery](/blog/topics/bigquery) · Updated October 6, 2026 · [Ievgen Krasovytskyi](/team/ievgen-krasovytskyi) · 6 min read

![How to connect BigQuery to Google Sheets: three ways](https://cdn.owox.ai/www/webflow/696641df2c213699403446ba_BigQ-to-GoogleSheets-1.png/public)

There are three ways to get BigQuery data into Google Sheets, and they suit different jobs:

| Way | Best for | Refreshes | Who writes the SQL |
| --- | --- | --- | --- |
| **Save results** from the BigQuery console | a one-off look | no | whoever runs it |
| **Connected Sheets** | exploring a table from a spreadsheet | manually or on a schedule | the spreadsheet user, or none |
| **A scheduled report from a Data Mart** | a recurring report many people read | on a schedule | the analyst, once |

If you need the numbers once, the first takes a minute. If the sheet has to stay current and other people rely on it, the choice is between the second and the third, and it turns on who owns the query.

**_Note:_** _Originally published in August 2023. Fully rewritten in October 2026: every step follows Google’s and OWOX’s current documentation._

## Way 1: save query results to Google Sheets

The BigQuery console can write a result straight into a new spreadsheet. From Google’s [export query results](https://cloud.google.com/bigquery/docs/export-file) page (checked October 2026):

1.  Open BigQuery in the Google Cloud console and run your query.
2.  When the results appear, click **Save results** and choose **Google Sheets**.
3.  The first time, allow BigQuery to write to your Google Drive.

The result lands in a new spreadsheet in your Drive. It is a **copy**: it does not refresh, and the next person who needs newer numbers runs the query again. That is fine for a quick answer and a poor base for anything recurring.

Google notes two limits: this works only from the console, not from the `bq` tool or the API, and an error when opening the sheet usually means your account needs Drive SDK access to Google Workspace.

## Way 2: Connected Sheets

Connected Sheets is Google’s own connector inside Google Sheets. It runs queries on BigQuery on your behalf, manually or on a schedule, and keeps the results in the spreadsheet. From Google’s [Connected Sheets guide](https://support.google.com/docs/answer/9702507):

1.  In Google Sheets, open **Data**, then **Data connectors**, then **Connect to BigQuery**.
2.  Choose a Google Cloud project.
3.  Choose a table or view, from your projects or from public datasets.
4.  Click **Connect**.

You then work with the table through pivot tables, charts, extracts and calculated columns that run as BigQuery queries, so a sheet can analyse far more rows than it could hold.

What you need: access to Google Cloud and BigQuery, and a project with billing. The queries run in that project and are billed there. Access through Connected Sheets is recorded in Cloud Audit Logs, and you cannot change BigQuery data from the sheet.

**It fits** people who are comfortable picking tables and building their own analysis. Every person who connects also decides which table to use and how to aggregate it, so two sheets built on the same data can still disagree.

## The Turning Point

OWOX Data Marts

See your first report built in real time. _15 minutes._

1.  Connect your data warehouse
2.  Pick your metrics
3.  Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

[Book a Demo](/book-a-call)

We'll use your actual use case

## Way 3: a scheduled report from a Data Mart

The third way puts one step between BigQuery and the spreadsheet: the analyst publishes the query once as a **Data Mart** in [OWOX Data Marts](https://www.owox.com/app-signup), and Sheets receives that. The spreadsheet user needs no SQL and no BigQuery access, and the analyst writes the query once instead of once per request.

There are two ways to deliver a Data Mart to Sheets: a **scheduled report**, set up by the analyst, and the **Google Sheets extension**, used by the business user. Both read the same Data Marts.

### Step 1: connect BigQuery

In your OWOX Data Marts project, open **Storages**, click **New Storage** and choose **Google BigQuery**. The [setup guide](https://docs.owox.com/docs/storages/supported-storages/google-bigquery/) lists what to fill in:

*   **Project ID**: the Google Cloud project that will run the queries. BigQuery usage is billed to this project.
*   **Location**: the data location, such as US or EU.
*   **Authentication**: a service account JSON key, or your Google account through OAuth. Either way the account needs the **BigQuery Data Editor** and **BigQuery Job User** roles. For a service account, the guide recommends a dedicated one with least-privilege access.

### Step 2: create the Data Mart

A Data Mart can be your own SQL, an existing table or view, or data that an OWOX connector loads into BigQuery. For a channel report, the SQL might be:

```
SELECT
  order_date,
  channel,
  COUNT(DISTINCT order_id) AS orders,
  SUM(amount) AS revenue
FROM mydataset.orders
WHERE order_date >= DATE_SUB(
    CURRENT_DATE(), INTERVAL 90 DAY)
  AND status = 'paid'
GROUP BY order_date, channel;
```

![Data Setup tab of the Unified Ad Spend Data Mart in OWOX Data Marts, defined as SQL on Google BigQuery, with the SQL validated and its scan size shown – the analyst’s query is the definition](https://cdn.owox.ai/www/content-marketing-article/bigquery-reports-in-google-sheets/screens/1.png/public)

OWOX Data Marts runs this SQL as written, in your BigQuery project. It does not transform the data; the logic is yours. Write the filter on the partition column of a [partitioned table](/blog/articles/bigquery-partitioned-tables) and each scheduled run scans only what it needs.

### Step 3: describe the output

Once the Data Mart is published, its **Output Schema** lists every column. Give each a business-friendly alias and a description. The descriptions travel into Google Sheets as notes on the header cells, so a reader can see what “revenue” includes without asking.

### Step 4: deliver it to Google Sheets

Add **Google Sheets** as a destination once, with Google OAuth or a service account key. Then, on the Data Mart’s **Destinations** tab, create a report: the spreadsheet and tab to fill, and the columns to include.

When the report runs, the rows are written into the sheet. Headers and data in the imported range are replaced on each refresh. Columns you add to the right are left alone, and a formula in row 2 is filled down to the new rows, so the reader’s own calculations survive the refresh. Where formulas, totals and lookups can sit so they survive is covered in [why a scheduled refresh keeps wiping Google Sheets formulas](/blog/articles/refresh-sql-google-sheets-formulas).

![Destinations tab of a Data Mart in OWOX Data Marts with three Google Sheets reports, each showing its last run date and a successful status – one Data Mart feeds several sheets](https://cdn.owox.ai/www/content-marketing-article/bigquery-reports-in-google-sheets/screens/2.png/public)

### Step 5: schedule it

On the **Triggers** tab, add a report run trigger: daily, weekly or at an interval, in the time zone you choose. Each run executes the query in BigQuery and rewrites the sheet, and **Run History** lists every run with its status.

![Run History in OWOX Data Marts with scheduled report runs for Google Sheets and connector runs, each with a Success status – the refresh is logged, not assumed](https://cdn.owox.ai/www/content-marketing-article/bigquery-reports-in-google-sheets/screens/3.png/public)

Then share the spreadsheet as usual. The readers get current numbers and never touch BigQuery.

### For business users: the Google Sheets extension

A scheduled report answers the questions someone predicted. For the others, the [OWOX Data Marts extension](https://workspace.google.com/marketplace/app/owox_data_marts/94902851409) lets business users on OWOX Cloud pull a Data Mart into the current sheet themselves: choose a Data Mart, pick columns, add filters and sorting, and run it. Only Data Marts the analyst marked **Available for reporting** appear. If the analyst has declared how two Data Marts join, their columns show up together in one list. More in [spreadsheet reporting](/features/spreadsheet-reporting).

## Which way to choose

*   **One answer, now:** save the results. Do not build on the copy.
*   **An analyst exploring a big table in a spreadsheet:** Connected Sheets.
*   **A report that several people open every week:** a scheduled report from a Data Mart, so the query and the refresh live in one place and every copy of the sheet agrees.
*   **Business users asking new questions of approved data:** the extension, on the same Data Marts.

Many teams use more than one. The cost of each is the queries it runs in BigQuery: a scheduled report is one query per run, however many people read the sheet. See [BigQuery pricing](/blog/articles/bigquery-pricing) for how those queries are billed.

## Going the other way: Sheets to BigQuery

To load a spreadsheet _into_ BigQuery as a table, see [how to connect Google Sheets to BigQuery](/blog/articles/bigquery-sheets-connector).

## Before you start

*   A Google Cloud project with BigQuery and billing set up.
*   A Google account with access to Google Sheets.
*   For the third way, an OWOX Data Marts project and the roles above for the account that connects BigQuery.

## Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

*   No AI hallucinations
*   Analyst-governed definitions
*   Every number traces to SQL

[Get started free](https://www.owox.com/app-signup)

## FAQ

## Frequently Asked Questions

Which way of connecting BigQuery to Google Sheets should I use?

Save results for a one-off look. Connected Sheets for someone exploring a table in a spreadsheet. A scheduled report from a Data Mart for a recurring report that several people read, so the query and the refresh live in one place.

How do I save BigQuery query results to Google Sheets?

In the BigQuery console, run the query, click Save results and choose Google Sheets. The result is written to a new spreadsheet in your Drive. It does not refresh, and this option is not available from the bq tool or the API.

How do I refresh BigQuery data in Google Sheets automatically?

Connected Sheets can refresh on a schedule. With OWOX Data Marts, a report run trigger on the Data Mart rewrites the sheet daily, weekly or at an interval in the time zone you choose, and Run History lists every run.

How do I connect BigQuery to Google Sheets?

Three ways: save query results to Google Sheets from the BigQuery console, which makes a one-off copy; connect a table with Connected Sheets under Data, Data connectors, Connect to BigQuery; or publish the query as a Data Mart in OWOX Data Marts and deliver it to a sheet with a scheduled report.

How do I install the OWOX Data Marts extension for Google Sheets?

Install OWOX Data Marts from the Google Workspace Marketplace; it then appears under Extensions in Google Sheets. It lists only the Data Marts that an analyst has marked Available for reporting.

What is Connected Sheets?

Google's BigQuery connector inside Google Sheets. It runs queries on BigQuery on your behalf, manually or on a schedule, and keeps the results in the spreadsheet, so you can analyse tables far larger than a sheet holds. You need BigQuery access and a project with billing.

## Who wrote this

![Ievgen Krasovytskyi](https://cdn.owox.ai/www/webflow/68404586b341508a789a4aa5_.png/public)

[Ievgen Krasovytskyi](/team/ievgen-krasovytskyi) · Head of Marketing

Ievgen Krasovytskyi is the Head of Marketing at OWOX, leading strategy across content, SEO, product marketing, and AI-powered automation. With deep expertise in analytics infrastructure, data warehouses, and marketing technology, he builds systems that connect marketing performance to business outcomes. Ievgen writes about SaaS growth, analytics workflows, and the future of AI in marketing operations.

[LinkedIn](https://www.linkedin.com/in/ievgen-krasovytskyi-a38a1253/) · [All articles](/team/ievgen-krasovytskyi)

[Google BigQuery](/blog/topics/bigquery)

## Related articles

[Google BigQuery · How to load data into BigQuery: every method and when to use it · October 6, 2026](/blog/articles/loading-data-into-bigquery)

[Google BigQuery · Is BigQuery a data warehouse or a data lake? A marketing guide · October 6, 2026](/blog/articles/why-gbq-perfect-data-lake)

[AI in Analytics · Hire AI ChatGPT for Generating SQL Queries 50x Faster · June 8, 2024](/blog/articles/how-to-build-sql-queries-with-chatgpt)

[See all articles →](/blog/articles)

## Book a call

You are booked. The invitation is on its way to , with the calendar invite and the meeting link.

[Reschedule](#)

[Cancel](#)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Google BigQuery](https://www.owox.com/blog/topics/bigquery) — /blog/topics/bigquery.md
- [Ievgen Krasovytskyi](https://www.owox.com/team/ievgen-krasovytskyi) — /team/ievgen-krasovytskyi.md
- [Book a Demo](https://www.owox.com/book-a-call) — /book-a-call.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [setup guide](https://docs.owox.com/docs/storages/supported-storages/google-bigquery)
- [partitioned table](https://www.owox.com/blog/articles/bigquery-partitioned-tables) — /blog/articles/bigquery-partitioned-tables.md
- [why a scheduled refresh keeps wiping Google Sheets formulas](https://www.owox.com/blog/articles/refresh-sql-google-sheets-formulas) — /blog/articles/refresh-sql-google-sheets-formulas.md
- [spreadsheet reporting](https://www.owox.com/features/spreadsheet-reporting) — /features/spreadsheet-reporting.md
- [BigQuery pricing](https://www.owox.com/blog/articles/bigquery-pricing) — /blog/articles/bigquery-pricing.md
- [how to connect Google Sheets to BigQuery](https://www.owox.com/blog/articles/bigquery-sheets-connector) — /blog/articles/bigquery-sheets-connector.md
- [Google BigQuery · How to load data into BigQuery: every method and when to use it · October 6, 2026](https://www.owox.com/blog/articles/loading-data-into-bigquery) — /blog/articles/loading-data-into-bigquery.md
- [Google BigQuery · Is BigQuery a data warehouse or a data lake? A marketing guide · October 6, 2026](https://www.owox.com/blog/articles/why-gbq-perfect-data-lake) — /blog/articles/why-gbq-perfect-data-lake.md
- [AI in Analytics · Hire AI ChatGPT for Generating SQL Queries 50x Faster · June 8, 2024](https://www.owox.com/blog/articles/how-to-build-sql-queries-with-chatgpt) — /blog/articles/how-to-build-sql-queries-with-chatgpt.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
