There are three methods for exporting Google Analytics 4 data into Google Sheets. Let’s review each of them.
Option #1: Export GA4 Data using GA4 Interface (Manually)
The first can be an excellent option for those who don’t need to keep their data up-to-date in Google Sheets and want to export GA4 data for some specific analysis.
Every report in Google Analytics 4, whether a default one or GA4 exploration, allows you to download the data as a CSV file or export the data directly into Google Sheets.
So GA4 Explore allows you to export the data into Google Sheets directly. In order to do it, create your report and click on the top right-side navigation download button and select Google Sheets. After that, the data will be exported directly into Google Sheets.

If you’re using a default GA4 report such as “Traffic Acquisition report”, you must download the data as a CSV file first and then import the CSV file into Google Sheets. In this case, the steps look the following way:
- Click on the “Share this report” icon
- Chose “Download file”
- Select “Download CSV”
- Import downloaded CSV file into Google Sheets

Again, this is an excellent option for those wanting to conduct a one-time analysis. If you are interested in not only storing your historical GA4 data in Google Sheets but also keeping it up-to-date, you need the second or the third option.
Option #2: Export GA4 Data using Google Sheets Add-on (Automatically)
The second option is to use the Google Sheets add-on. Google Analytics 4 is a relatively new tool, and Google hasn’t built its own Google Sheet add-on yet, but there is at least one free Google Sheets Add-on that you can use to import GA4 data into Google Sheets. It’s called GA4 Magic Reports and was created by Michele Pisani.

If you used the “Google Analytics Spreadsheet Add-on” add-on beforehand, you will learn how to use GA4 Magic Reports fast because it has almost the same UI.
It also allows you to create multiple reports and update them hourly, daily, weekly or monthly.
However, this add-on can’t export data from some GA4 explorations, such as funnels or cohorts. If you need to export data from these reports, use Google Analytics 4 Data API.
Option #3: Export GA4 Data using Google Analytics 4 Data API (Dev skills required)
If you are comfortable with Google App Script, you can connect your Google Sheets file with GA4 using Google Analytics 4 Data API and export the necessary data from it. You can also use triggers to schedule the data updates.
Google already published the template you can use to understand better how to connect Google Sheets with GA4 using App Script.
/**
* Runs a report of a Google Analytics 4 property ID. Creates a sheet with the
* report.
*/
function runReport() {
/**
* TODO(developer): Uncomment this variable and replace with your
* Google Analytics 4 property ID before running the sample.
*/
const propertyId = 'YOUR-GA4-PROPERTY-ID';
try {
const metric = AnalyticsData.newMetric();
metric.name = 'activeUsers';
const dimension = AnalyticsData.newDimension();
dimension.name = 'city';
const dateRange = AnalyticsData.newDateRange();
dateRange.startDate = '2020-03-31';
dateRange.endDate = 'today';
const request = AnalyticsData.newRunReportRequest();
request.dimensions = [dimension];
request.metrics = [metric];
request.dateRanges = dateRange;
const report = AnalyticsData.Properties.runReport(request,
'properties/' + propertyId);
if (!report.rows) {
console.log('No rows returned.');
return;
}
const spreadsheet = SpreadsheetApp.create('Google Analytics Report');
const sheet = spreadsheet.getActiveSheet();
// Append the headers.
const dimensionHeaders = report.dimensionHeaders.map(
(dimensionHeader) => {
return dimensionHeader.name;
});
const metricHeaders = report.metricHeaders.map(
(metricHeader) => {
return metricHeader.name;
});
const headers = [...dimensionHeaders, ...metricHeaders];
sheet.appendRow(headers);
// Append the results.
const rows = report.rows.map((row) => {
const dimensionValues = row.dimensionValues.map(
(dimensionValue) => {
return dimensionValue.value;
});
const metricValues = row.metricValues.map(
(metricValues) => {
return metricValues.value;
});
return [...dimensionValues, ...metricValues];
});
sheet.getRange(2, 1, report.rows.length, headers.length)
.setValues(rows);
console.log('Report spreadsheet created: %s',
spreadsheet.getUrl());
} catch (e) {
// TODO (Developer) - Handle exception
console.log('Failed with error: %s', e.error);
}
}
Of course, this option suits people who are comfortable with Google App Script and want to export GA4 data from reports of GA4 explorations. I recommend looking at the second and first options for all other cases.
Final Word
Exporting GA4 data into Google Sheets allows you to merge it with data from other sources. The best option to export GA4 data into Google Sheets and update it with the new data periodically is using the Google Sheets add-on. There is a free option available – GA4 Magic Reports.
Frequently Asked Questions
You can use the GA4 Magic Reports add-on to export GA4 data into Google Sheets.
You can manually export GA4 data from GA4 reports or use Google Sheets add-ons such as GA4 Magic Reports.