
How to Export Google Analytics Data to Google Sheets
Not every reporting need justifies a full Looker Studio dashboard or a custom API script. Sometimes you just need GA4 data in a spreadsheet — to combine with other data, do a custom calculation GA4's interface doesn't support, or share with someone who's most comfortable working in Sheets. GA4 offers a few different paths to get there, depending on whether you need a one-time export or an automatically refreshing connection.
Option 1: Manual Export from Any Report or Exploration
The simplest option for a one-time need:
- Open any standard report or Exploration table in GA4.
- Click the Export icon (usually near the top-right of the report).
- Choose Download file (CSV) or, in some report views, Export to Sheets directly.
- If exporting as CSV, open Google Sheets and use File → Import to bring it in.
This works well for a single, static snapshot but requires manually repeating the process every time you want updated data.
Option 2: The Google Analytics Add-on for Sheets
For a more integrated, semi-automated experience:
- In Google Sheets, go to Extensions → Add-ons → Get add-ons.
- Search for Google Analytics and install the official add-on.
- Once installed, go to Extensions → Google Analytics → Create new report.
- Select your GA4 account, property, and the specific metrics and dimensions you want.
- Configure the date range and any filters.
- Click Create Report, which generates a new sheet with your report configuration.
- Use Extensions → Google Analytics → Run reports to refresh the data on demand.
This add-on supports GA4 properties and gives you a repeatable report configuration you can re-run whenever you want updated numbers, without rebuilding the query each time — though it requires manually clicking "Run reports" rather than updating fully automatically.
Option 3: A Script-Based Live Connection (Google Apps Script)
For a report that should update automatically on a schedule, without manual intervention, Google Apps Script combined with the GA4 Data API offers a fully automated path:
- In your Google Sheet, go to Extensions → Apps Script.
- Write a script calling the GA4 Data API (using OAuth2 or a service account, depending on your authentication approach) and writing results into the sheet.
function fetchGA4Data() {
const propertyId = "123456789";
const url = `https://analyticsdata.googleapis.com/v1beta/properties/${propertyId}:runReport`;
const payload = {
dateRanges: [{ startDate: "7daysAgo", endDate: "yesterday" }],
dimensions: [{ name: "sessionDefaultChannelGroup" }],
metrics: [{ name: "sessions" }, { name: "conversions" }],
};
const options = {
method: "post",
contentType: "application/json",
headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
payload: JSON.stringify(payload),
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(["Channel", "Sessions", "Conversions"]);
data.rows.forEach((row) => {
sheet.appendRow([
row.dimensionValues[0].value,
row.metricValues[0].value,
row.metricValues[1].value,
]);
});
}
- Set up a time-based trigger (Triggers → Add Trigger) to run this function automatically on a schedule — daily or weekly, depending on your needs.
This approach requires enabling the necessary OAuth scopes and API access for the Apps Script project, but once configured, it gives you a spreadsheet that refreshes itself without any manual step at all.
Choosing the Right Option
- One-time or infrequent need — manual CSV export is the fastest path, requiring no setup.
- Regular, recurring reports you're willing to manually refresh — the official Google Analytics add-on strikes a good balance of setup effort and repeatability.
- Fully automated, always-current data — an Apps Script-based approach requires more upfront setup but eliminates any manual refresh step entirely.
Combining GA4 Data with Other Spreadsheet Data
One of the most common reasons to bring GA4 data into Sheets specifically (rather than staying in GA4's own interface or Looker Studio) is combining it with data that lives natively in a spreadsheet — a manually tracked sales pipeline, a budget allocation sheet, or ad spend data pulled from a platform without a native GA4-adjacent connector. Once GA4 data sits in a sheet alongside this other data, standard spreadsheet formulas (VLOOKUP, QUERY, pivot tables) can combine and calculate across both sources directly.
Common Issues When Exporting to Sheets
- Row limits — very large Explorations or reports can hit row limits on manual export; consider narrowing the date range or dimension combination, or using the API-based approach for genuinely large datasets.
- Stale data in a manually-refreshed sheet — if using the add-on's manual "Run reports" step, it's easy to forget to refresh before sharing a sheet, leading to someone reviewing outdated numbers unknowingly. Consider labeling the sheet with a clear "last refreshed" timestamp.
- Authentication expiring for Apps Script-based automated connections — periodically confirm the scheduled trigger is still successfully running, since an expired token or changed permission can cause it to silently stop updating.
FAQ about Exporting Google Analytics Data to Google Sheets

Is the official Google Analytics add-on free to use?
Yes — it's a free, Google-provided add-on for Google Sheets, requiring only that you have access to the GA4 property you're reporting from.
Can I schedule automatic refreshes without writing any code?
The official add-on requires manually clicking "Run reports" to refresh, rather than fully automatic scheduling; a scripted Apps Script approach is needed for genuinely hands-off, scheduled automatic updates.
What's the advantage of Sheets over Looker Studio for GA4 reporting?
Sheets is better suited when you need to combine GA4 data with other spreadsheet-native data and perform custom formula-based calculations; Looker Studio is generally better for polished, shareable visual dashboards.
Does exporting to Sheets require any special GA4 permissions?
You need at least Viewer access to the GA4 property being reported on, the same baseline access required for viewing reports directly in GA4's own interface.
Can I export raw event-level data, or only aggregated reports?
Standard exports (CSV, the add-on, or the Data API) work with aggregated dimension/metric combinations, similar to what you'd see in GA4's own reports — genuinely raw, unaggregated event-level data requires a BigQuery export instead.
How large a dataset can I export to Sheets at once?
Manual exports and the add-on can hit practical row limits for very large reports; narrowing your date range, dimensions, or using the API directly with pagination handles larger datasets more reliably.
Conclusion
Getting Google Analytics data into Google Sheets ranges from a quick one-click export to a fully automated, self-refreshing script, and the right choice depends entirely on how often you need updated numbers and how much setup effort you're willing to invest. Pick the option matching your actual recurring need, and your website's analytics data becomes as flexible as any other spreadsheet-native dataset.


