Analytics Data Service

The Analytics Data service allows you to use the Google Analytics Data API v1 in Apps Script. This API gives Google Analytics users programmatic access to Google Analytics 4 (GA4) report data.

Reference

For detailed information on this service, see the Google Analytics Data API v1 reference documentation.

Like all advanced services in Apps Script, the AnalyticsData service uses the same objects, methods, and parameters as the public API. For more information, see How method signatures are determined.

To report issues and find other support, see the Google Analytics Data API v1 support page.

Sample code

Run a report

The sample runs a report to retrieve the active users count by city and stores the results in a new spreadsheet.

advanced/analyticsData.gs
/** * Runs a report of a Google Analytics 4 property ID. Creates a sheet with the * report. */functionrunReport(){/** * TODO(developer): Uncomment this variable and replace with your * Google Analytics 4 property ID before running the sample. */constpropertyId='YOUR-GA4-PROPERTY-ID';try{constmetric=AnalyticsData.newMetric();metric.name='activeUsers';constdimension=AnalyticsData.newDimension();dimension.name='city';constdateRange=AnalyticsData.newDateRange();dateRange.startDate='2020-03-31';dateRange.endDate='today';constrequest=AnalyticsData.newRunReportRequest();request.dimensions=[dimension];request.metrics=[metric];request.dateRanges=dateRange;constreport=AnalyticsData.Properties.runReport(request,'properties/'+propertyId);if(!report.rows){console.log('Norowsreturned.');return;}constspreadsheet=SpreadsheetApp.create('GoogleAnalyticsReport');constsheet=spreadsheet.getActiveSheet();// Append the headers.constdimensionHeaders=report.dimensionHeaders.map((dimensionHeader)=>{returndimensionHeader.name;});constmetricHeaders=report.metricHeaders.map((metricHeader)=>{returnmetricHeader.name;});constheaders=[...dimensionHeaders,...metricHeaders];sheet.appendRow(headers);// Append the results.constrows=report.rows.map((row)=>{constdimensionValues=row.dimensionValues.map((dimensionValue)=>{returndimensionValue.value;});constmetricValues=row.metricValues.map((metricValues)=>{returnmetricValues.value;});return[...dimensionValues,...metricValues];});sheet.getRange(2,1,report.rows.length,headers.length).setValues(rows);console.log('Reportspreadsheetcreated:%s',spreadsheet.getUrl());}catch(e){// TODO (Developer) - Handle exceptionconsole.log('Failedwitherror:%s',e.error);}}