/** * 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); } }
Verification: dee6713619b2b55bBecome a Premium Member and Get Access to All our Exclusive Videos, Pay only one time. No subscription. (Lifetime membership)