本指南將說明如何使用 Google Analytics Data API v1。Data API v1 提供的報表類似 您可以在 Google Analytics 的「報表」部分產生報表 使用者介面。
本指南涵蓋核心報表,也就是「資料」的一般報表功能 也能使用 Google Cloud CLI 或 Compute Engine APIData API v1 也具備特殊的「即時」 報表和程序報表。
建議採用 runReport
方法
並用於本指南的所有範例。請參閱進階說明
功能,瞭解其他核心檢舉方法的總覽。試試
使用查詢瀏覽器測試
舉個簡單的例子,您可以定義情境
並指示 AI 如何回應服務中心查詢
報表總覽
「報表」是報表中 Google Analytics 資源。每份報表表格都有 查詢中要求的維度和指標,且會逐列顯示資料。
以下報表表格範例顯示一個維度 (Country
) 和一個指標
(activeUsers
):
國家/地區 | 活躍使用者 |
---|---|
日本 | 2541 |
法國 | 12 |
指定資料來源
每項 runReport
請求都必須指定 Google Analytics 資源
ID:您指定的 Analytics 資源會做為
該查詢的內容範例如下:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
這項要求的回應中只包含 Analytics 資源的資料
您指定為 GA_PROPERTY_ID
。
如果您使用 Data API 用戶端程式庫,請指定資料
位於 property
參數中的來源,格式為
properties/GA_PROPERTY_ID
。詳情請參閱
快速入門指南中的範例
用戶端程式庫
請參閱「將 Measurement Protocol 事件傳送給 Google Analytics :在報表中加入 Measurement Protocol 事件。
產生報表
如要產生報表,請建構
RunReportRequest
物件。
建議您從下列參數著手:
dateRanges
欄位中的有效項目。- 「
dimensions
」中至少有一個有效的項目 ] 欄位。 metrics
欄位中至少一個有效的項目。
以下是含有建議欄位的要求範例:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "2023-09-01"", "endDate": "2023-09-15" }],
"dimensions": [{ "name": "country" }],
"metrics": [{ "name": "activeUsers" }]
}
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.DimensionHeader; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.MetricHeader; import com.google.analytics.data.v1beta.Row; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the creation of a basic report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportSample" * }</pre> */ public class RunReportSample { public static void main(String... args) throws Exception { /** * TODO(developer): Replace this variable with your Google Analytics 4 property ID before * running the sample. */ String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReport(propertyId); } // Runs a report of active users grouped by country. static void sampleRunReport(String propertyId) throws Exception { // Using a default constructor instructs the client to use the credentials // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("country")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .addDateRanges( DateRange.newBuilder().setStartDate("2020-09-01").setEndDate("2020-09-15")) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); printRunResponseResponse(response); } } // Prints results of a runReport call. static void printRunResponseResponse(RunReportResponse response) { System.out.printf("%s rows received%n", response.getRowsList().size()); for (DimensionHeader header : response.getDimensionHeadersList()) { System.out.printf("Dimension header name: %s%n", header.getName()); } for (MetricHeader header : response.getMetricHeadersList()) { System.out.printf("Metric header name: %s (%s)%n", header.getName(), header.getType()); } System.out.println("Report result:"); for (Row row : response.getRowsList()) { System.out.printf( "%s, %s%n", row.getDimensionValues(0).getValue(), row.getMetricValues(0).getValue()); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyId Your GA-4 Property ID */ function run_report(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDateRanges([ new DateRange([ 'start_date' => '2020-09-01', 'end_date' => '2020-09-15', ]), ]) ->setDimensions([ new Dimension([ 'name' => 'country', ]), ]) ->setMetrics([ new Metric([ 'name' => 'activeUsers', ]), ]); $response = $client->runReport($request); printRunReportResponse($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponse(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)%s', $metricHeader->getName(), MetricType::name($metricHeader->getType()), PHP_EOL ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { print $row->getDimensionValues()[0]->getValue() . ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL; } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Metric, MetricType, RunReportRequest, ) def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report(property_id) def run_report(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report of active users grouped by country.""" client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="country")], metrics=[Metric(name="activeUsers")], date_ranges=[DateRange(start_date="2020-09-01", end_date="2020-09-15")], ) response = client.run_report(request) print_run_report_response(response) def print_run_report_response(response): """Prints results of a runReport call.""" print(f"{response.row_count} rows received") for dimensionHeader in response.dimension_headers: print(f"Dimension header name: {dimensionHeader.name}") for metricHeader in response.metric_headers: metric_type = MetricType(metricHeader.type_).name print(f"Metric header name: {metricHeader.name} ({metric_type})") print("Report result:") for rowIdx, row in enumerate(response.rows): print(f"\nRow {rowIdx}") for i, dimension_value in enumerate(row.dimension_values): dimension_name = response.dimension_headers[i].name print(f"{dimension_name}: {dimension_value.value}") for i, metric_value in enumerate(row.metric_values): metric_name = response.metric_headers[i].name print(f"{metric_name}: {metric_value.value}")
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report of active users grouped by country. async function runReport() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'country', }, ], metrics: [ { name: 'activeUsers', }, ], dateRanges: [ { startDate: '2020-09-01', endDate: '2020-09-15', }, ], }); printRunReportResponse(response); } // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); } runReport();
查詢指標
Metrics
是衡量以下項目的量化衡量:
事件資料。您必須在 runReport
要求中指定至少一個指標。
如需您可以查詢的完整指標清單,請參閱 API 指標。
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "date" }],
"metrics": [
{
"name": "activeUsers"
},
{
"name": "newUsers"
},
{
"name": "totalRevenue"
}
],
}
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the creation of a basic report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleMetricsSample" * }</pre> */ public class RunReportWithMultipleMetricsSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithMultipleMetrics(propertyId); } // Runs a report of active users, new users and total revenue grouped by date dimension. static void sampleRunReportWithMultipleMetrics(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("date")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .addMetrics(Metric.newBuilder().setName("newUsers")) .addMetrics(Metric.newBuilder().setName("totalRevenue")) .addDateRanges(DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("today")) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyID Your GA-4 Property ID * Runs a report of active users grouped by three metrics. */ function run_report_with_multiple_metrics(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([new Dimension(['name' => 'date'])]) ->setMetrics([ new Metric(['name' => 'activeUsers']), new Metric(['name' => 'newUsers']), new Metric(['name' => 'totalRevenue']) ]) ->setDateRanges([ new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'today', ]) ]); $response = $client->runReport($request); printRunReportResponseWithMultipleMetrics($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithMultipleMetrics(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_multiple_metrics(property_id) def run_report_with_multiple_metrics(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report of active users, new users and total revenue grouped by date dimension.""" client = BetaAnalyticsDataClient() # Runs a report of active users grouped by three dimensions. request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="date")], metrics=[ Metric(name="activeUsers"), Metric(name="newUsers"), Metric(name="totalRevenue"), ], date_ranges=[DateRange(start_date="7daysAgo", end_date="today")], ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report of active users grouped by three metrics. async function runReportWithMultipleMetrics() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'date', }, ], metrics: [ { name: 'activeUsers', }, { name: 'newUsers', }, { name: 'totalRevenue', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'today', }, ], }); printRunReportResponse(response); } runReportWithMultipleMetrics(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
下方回應範例顯示 1135 位活躍使用者、512 位新使用者,
73.0841 當日以您 Analytics 資源貨幣計算的總收益
20231025
(2023 年 10 月 25 日)。
"rows": [
...
{
"dimensionValues": [
{
"value": "20231025"
}
],
"metricValues": [
{
"value": "1135"
},
{
"value": "512"
},
{
"value": "73.0841"
}
]
},
...
],
閱讀回覆
報表回應內含標頭
資料列。標題由
DimensionHeaders
和
MetricHeaders
,這會列出
報表。每列包含
DimensionValues
和
MetricValues
。請注意,
在要求、標頭和資料列中,欄的內容會保持一致。
以下是先前範例要求的回應範例:
{
"dimensionHeaders": [
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "Japan"
}
],
"metricValues": [
{
"value": "2541"
}
]
},
{
"dimensionValues": [
{
"value": "France"
}
],
"metricValues": [
{
"value": "12"
}
]
}
],
"metadata": {},
"rowCount": 2
}
將資料分組與篩選
維度是可用的定性屬性
來分組及篩選資料舉例來說,city
維度代表
城市,例如 Paris
或 New York
(每個事件的來源)。維度為
這是 runReport
請求的選填欄位,每個維度最多可使用九個維度
請求。
群組
以下要求範例將活躍使用者分為三個維度:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [
{
"name": "country"
},
{
"name": "region"
},
{
"name": "city"
}
],
"metrics": [{ "name": "activeUsers" }]
}
```
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the creation of a basic report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleDimensionsSample" * }</pre> */ public class RunReportWithMultipleDimensionsSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithMultipleDimensions(propertyId); } // Runs a report of active users grouped by three dimensions. static void sampleRunReportWithMultipleDimensions(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("country")) .addDimensions(Dimension.newBuilder().setName("region")) .addDimensions(Dimension.newBuilder().setName("city")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .addDateRanges(DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("today")) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyID Your GA-4 Property ID * Runs a report of active users grouped by three dimensions. */ function run_report_with_multiple_dimensions(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([ new Dimension(['name' => 'country']), new Dimension(['name' => 'region']), new Dimension(['name' => 'city']), ]) ->setMetrics([new Metric(['name' => 'activeUsers'])]) ->setDateRanges([ new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'today', ]) ]); $response = $client->runReport($request); printRunReportResponseWithMultipleDimensions($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithMultipleDimensions(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_multiple_dimensions(property_id) def run_report_with_multiple_dimensions(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report of active users grouped by three dimensions.""" client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[ Dimension(name="country"), Dimension(name="region"), Dimension(name="city"), ], metrics=[Metric(name="activeUsers")], date_ranges=[DateRange(start_date="7daysAgo", end_date="today")], ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report of active users grouped by three dimensions. async function runReportWithMultipleDimensions() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'country', }, { name: 'region', }, { name: 'city', }, ], metrics: [ { name: 'activeUsers', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'today', }, ], }); printRunReportResponse(response); } runReportWithMultipleDimensions(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
以下是先前要求的報表列範例。這一列會顯示 指定日期範圍內有 47 位活躍使用者,而開普敦的活動 南非。
"rows": [
...
{
"dimensionValues": [
{
"value": "South Africa"
},
{
"value": "Western Cape"
},
{
"value": "Cape Town"
}
],
"metricValues": [
{
"value": "47"
}
]
},
...
],
篩選器
報表只含有特定維度值的資料。篩選
維度,請指定 FilterExpression
的
dimensionFilter
。
] 欄位。
以下範例會傳回 eventCount
的時間序列報表
各date
的 eventName
為 first_open
:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "date" }],
"metrics": [{ "name": "eventCount" }],
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"stringFilter": {
"value": "first_open"
}
}
},
}
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Filter; import com.google.analytics.data.v1beta.FilterExpression; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the usage of dimension and metric * filters in a report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionFilterSample" * }</pre> */ public class RunReportWithDimensionFilterSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithDimensionFilter(propertyId); } // Runs a report using a dimension filter. The call returns a time series report of `eventCount` // when `eventName` is `first_open` for each date. // This sample uses relative date range values. // See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. static void sampleRunReportWithDimensionFilter(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("date")) .addMetrics(Metric.newBuilder().setName("eventCount")) .addDateRanges( DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday")) .setDimensionFilter( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("eventName") .setStringFilter( Filter.StringFilter.newBuilder().setValue("first_open")))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Filter; use Google\Analytics\Data\V1beta\Filter\StringFilter; use Google\Analytics\Data\V1beta\FilterExpression; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyId Your GA-4 Property ID * Runs a report using a dimension filter. The call returns a time series * report of `eventCount` when `eventName` is `first_open` for each date. * This sample uses relative date range values. See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange * for more information. */ function run_report_with_dimension_filter(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([new Dimension(['name' => 'date'])]) ->setMetrics([new Metric(['name' => 'eventCount'])]) ->setDateRanges([ new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'yesterday', ]) ]) ->setDimensionFilter(new FilterExpression([ 'filter' => new Filter([ 'field_name' => 'eventName', 'string_filter' => new StringFilter([ 'value' => 'first_open' ]), ]), ])); $response = $client->runReport($request); printRunReportResponseWithDimensionFilter($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithDimensionFilter(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Filter, FilterExpression, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_dimension_filter(property_id) def run_report_with_dimension_filter(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report using a dimension filter. The call returns a time series report of `eventCount` when `eventName` is `first_open` for each date. This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange for more information. """ client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="date")], metrics=[Metric(name="eventCount")], date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")], dimension_filter=FilterExpression( filter=Filter( field_name="eventName", string_filter=Filter.StringFilter(value="first_open"), ) ), ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report using a dimension filter. The call returns a time series // report of `eventCount` when `eventName` is `first_open` for each date. // This sample uses relative date range values. See // https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. async function runReportWithDimensionFilter() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'date', }, ], metrics: [ { name: 'eventCount', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'yesterday', }, ], dimensionFilter: { filter: { fieldName: 'eventName', stringFilter: { value: 'first_open', }, }, }, }); printRunReportResponse(response); } runReportWithDimensionFilter(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
以下是另一個 FilterExpression
範例:
其中 andGroup
只包含符合運算式所有條件的資料
請參考閱讀清單,進一步瞭解
如何選擇 Kubeflow Pipelines SDK 或 TFX這個 dimensionFilter
會選取 browser
為 Chrome
和
countryId
為 US
:
HTTP
...
"dimensionFilter": {
"andGroup": {
"expressions": [
{
"filter": {
"fieldName": "browser",
"stringFilter": {
"value": "Chrome"
}
}
},
{
"filter": {
"fieldName": "countryId",
"stringFilter": {
"value": "US"
}
}
}
]
}
},
...
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Filter; import com.google.analytics.data.v1beta.FilterExpression; import com.google.analytics.data.v1beta.FilterExpressionList; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the usage of dimension and metric * filters in a report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleDimensionFiltersSample" * }</pre> */ public class RunReportWithMultipleDimensionFiltersSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithMultipleDimensionFilters(propertyId); } // Runs a report using multiple dimension filters joined as `and_group` expression. The filter // selects for when both `browser` is `Chrome` and `countryId` is `US`. // This sample uses relative date range values. // See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. static void sampleRunReportWithMultipleDimensionFilters(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("browser")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .addDateRanges( DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday")) .setDimensionFilter( FilterExpression.newBuilder() .setAndGroup( FilterExpressionList.newBuilder() .addExpressions( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("browser") .setStringFilter( Filter.StringFilter.newBuilder() .setValue("Chrome")))) .addExpressions( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("countryId") .setStringFilter( Filter.StringFilter.newBuilder() .setValue("US")))))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Filter; use Google\Analytics\Data\V1beta\Filter\StringFilter; use Google\Analytics\Data\V1beta\FilterExpression; use Google\Analytics\Data\V1beta\FilterExpressionList; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyId Your GA-4 Property ID * Runs a report using multiple dimension filters joined as `and_group` * expression. The filter selects for when both `browser` is `Chrome` and * `countryId` is `US`. * This sample uses relative date range values. See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange * for more information. */ function run_report_with_multiple_dimension_filters(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([new Dimension(['name' => 'browser'])]) ->setMetrics([new Metric(['name' => 'activeUsers'])]) ->setDateRanges([ new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'yesterday', ]), ]) ->setDimensionFilter(new FilterExpression([ 'and_group' => new FilterExpressionList([ 'expressions' => [ new FilterExpression([ 'filter' => new Filter([ 'field_name' => 'browser', 'string_filter' => new StringFilter([ 'value' => 'Chrome', ]) ]), ]), new FilterExpression([ 'filter' => new Filter([ 'field_name' => 'countryId', 'string_filter' => new StringFilter([ 'value' => 'US', ]) ]), ]), ], ]), ])); $response = $client->runReport($request); printRunReportResponseWithMultipleDimensionFilters($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithMultipleDimensionFilters(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Filter, FilterExpression, FilterExpressionList, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_multiple_dimension_filters(property_id) def run_report_with_multiple_dimension_filters(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report using multiple dimension filters joined as `and_group` expression. The filter selects for when both `browser` is `Chrome` and `countryId` is `US`. This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange for more information. """ client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="browser")], metrics=[Metric(name="activeUsers")], date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")], dimension_filter=FilterExpression( and_group=FilterExpressionList( expressions=[ FilterExpression( filter=Filter( field_name="browser", string_filter=Filter.StringFilter(value="Chrome"), ) ), FilterExpression( filter=Filter( field_name="countryId", string_filter=Filter.StringFilter(value="US"), ) ), ] ) ), ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report using multiple dimension filters joined as `and_group` // expression. The filter selects for when both `browser` is `Chrome` and // `countryId` is `US`. // This sample uses relative date range values. See // https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. async function runReportWithMultipleDimensionFilters() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'browser', }, ], metrics: [ { name: 'activeUsers', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'yesterday', }, ], dimensionFilter: { andGroup: { expressions: [ { filter: { fieldName: 'browser', stringFilter: { value: 'Chrome', }, }, }, { filter: { fieldName: 'countryId', stringFilter: { value: 'US', }, }, }, ], }, }, }); printRunReportResponse(response); } runReportWithMultipleDimensionFilters(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
orGroup
包含符合運算式任一條件的資料
請參考閱讀清單,進一步瞭解
如何選擇 Kubeflow Pipelines SDK 或 TFX
notExpression
會排除與其內部運算式相符的資料。請參考
dimensionFilter
只會傳回 pageTitle
不是 My
Homepage
時的資料。這份報表會顯示「My
Homepage
」以外每 pageTitle
一次的事件資料:
HTTP
...
"dimensionFilter": {
"notExpression": {
"filter": {
"fieldName": "pageTitle",
"stringFilter": {
"value": "My Homepage"
}
}
}
},
...
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Filter; import com.google.analytics.data.v1beta.FilterExpression; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the usage of dimension and metric * filters in a report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionExcludeFilterSample" * }</pre> */ public class RunReportWithDimensionExcludeFilterSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithDimensionExcludeFilter(propertyId); } // Runs a report using a filter with `not_expression`. The dimension filter selects for when // `pageTitle` is not `My Homepage`. // This sample uses relative date range values. // See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. static void sampleRunReportWithDimensionExcludeFilter(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("pageTitle")) .addMetrics(Metric.newBuilder().setName("sessions")) .addDateRanges( DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday")) .setDimensionFilter( FilterExpression.newBuilder() .setNotExpression( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("pageTitle") .setStringFilter( Filter.StringFilter.newBuilder() .setValue("My Homepage"))))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Filter; use Google\Analytics\Data\V1beta\Filter\StringFilter; use Google\Analytics\Data\V1beta\FilterExpression; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * Runs a report using a filter with `not_expression`. The dimension filter * selects for when `pageTitle` is not `My Homepage`. * This sample uses relative date range values. See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange * for more information. * @param string $propertyId Your GA-4 Property ID */ function run_report_with_dimension_exclude_filter(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([new Dimension(['name' => 'pageTitle'])]) ->setMetrics([new Metric(['name' => 'sessions'])]) ->setDateRanges([new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'yesterday', ]) ]) ->setDimensionFilter(new FilterExpression([ 'not_expression' => new FilterExpression([ 'filter' => new Filter([ 'field_name' => 'pageTitle', 'string_filter' => new StringFilter([ 'value' => 'My Homepage', ]), ]), ]), ])); $response = $client->runReport($request); printRunReportResponseWithDimensionExcludeFilter($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithDimensionExcludeFilter(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Filter, FilterExpression, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_dimension_exclude_filter(property_id) def run_report_with_dimension_exclude_filter(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report using a filter with `not_expression`. The dimension filter selects for when `pageTitle` is not `My Homepage`. This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange for more information. """ client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="pageTitle")], metrics=[Metric(name="sessions")], date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")], dimension_filter=FilterExpression( not_expression=FilterExpression( filter=Filter( field_name="pageTitle", string_filter=Filter.StringFilter(value="My Homepage"), ) ) ), ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report using a filter with `not_expression`. The dimension filter // selects for when `pageTitle` is not `My Homepage`. // This sample uses relative date range values. See // https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. async function runReportWithDimensionExcludeFilter() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'pageTitle', }, ], metrics: [ { name: 'sessions', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'yesterday', }, ], dimensionFilter: { notExpression: { filter: { fieldName: 'pageTitle', stringFilter: { value: 'My Homepage', }, }, }, }, }); printRunReportResponse(response); } runReportWithDimensionExcludeFilter(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
inListFilter
會比對清單中任何值的資料。請參考
dimensionFilter
會傳回事件資料,其中 eventName
為以下任一值:
purchase
、in_app_purchase
和 app_store_subscription_renew
:
HTTP
...
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"inListFilter": {
"values": ["purchase",
"in_app_purchase",
"app_store_subscription_renew"]
}
}
},
...
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Filter; import com.google.analytics.data.v1beta.FilterExpression; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; import java.util.ArrayList; /** * Google Analytics Data API sample application demonstrating the usage of dimension and metric * filters in a report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionInListFilterSample" * }</pre> */ public class RunReportWithDimensionInListFilterSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithDimensionInListFilter(propertyId); } // Runs a report using a dimension filter with `in_list_filter` expression. The filter selects for // when `eventName` is set to one of three event names specified in the query. // This sample uses relative date range values. // See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. static void sampleRunReportWithDimensionInListFilter(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDimensions(Dimension.newBuilder().setName("eventName")) .addMetrics(Metric.newBuilder().setName("sessions")) .addDateRanges( DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday")) .setDimensionFilter( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName("eventName") .setInListFilter( Filter.InListFilter.newBuilder() .addAllValues( new ArrayList<String>() { { add("purchase"); add("in_app_purchase"); add("app_store_subscription_renew"); } }) .build()))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Filter; use Google\Analytics\Data\V1beta\Filter\InListFilter; use Google\Analytics\Data\V1beta\FilterExpression; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * Runs a report using a dimension filter with `in_list_filter` expression. * The filter selects for when `eventName` is set to one of three event names * specified in the query. * This sample uses relative date range values. See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange * for more information. * @param string $propertyId Your GA-4 Property ID */ function run_report_with_dimension_in_list_filter(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDimensions([new Dimension(['name' => 'eventName'])]) ->setMetrics([new Metric(['name' => 'sessions'])]) ->setDateRanges([new DateRange([ 'start_date' => '7daysAgo', 'end_date' => 'yesterday', ]) ]) ->setDimensionFilter(new FilterExpression([ 'filter' => new Filter([ 'field_name' => 'eventName', 'in_list_filter' => new InListFilter([ 'values' => [ 'purchase', 'in_app_purchase', 'app_store_subscription_renew', ], ]), ]), ])); $response = $client->runReport($request); printRunReportResponseWithDimensionInListFilter($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithDimensionInListFilter(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Filter, FilterExpression, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_dimension_in_list_filter(property_id) def run_report_with_dimension_in_list_filter(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report using a dimension filter with `in_list_filter` expression. The filter selects for when `eventName` is set to one of three event names specified in the query. This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange for more information. """ client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="eventName")], metrics=[Metric(name="sessions")], date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")], dimension_filter=FilterExpression( filter=Filter( field_name="eventName", in_list_filter=Filter.InListFilter( values=[ "purchase", "in_app_purchase", "app_store_subscription_renew", ] ), ) ), ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report using a dimension filter with `in_list_filter` expression. // The filter selects for when `eventName` is set to one of three event names // specified in the query. // This sample uses relative date range values. See // https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange // for more information. async function runReportWithDimensionInListFilter() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dimensions: [ { name: 'eventName', }, ], metrics: [ { name: 'sessions', }, ], dateRanges: [ { startDate: '7daysAgo', endDate: 'yesterday', }, ], dimensionFilter: { filter: { fieldName: 'eventName', inListFilter: { values: [ 'purchase', 'in_app_purchase', 'app_store_subscription_renew', ], }, }, }, }); printRunReportResponse(response); } runReportWithDimensionInListFilter(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
瀏覽長篇報表
根據預設,報表只包含前 10,000 列事件資料。目的地:
報表最多可顯示 100,000 列,您可以在報表中加入 "limit": 100000
這個
RunReportRequest
。
如果報表有超過 100,000 列,您必須傳送一系列請求 以及逐頁瀏覽結果例如,這個要求將 100,000 列:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
...
"limit": 100000,
"offset": 0
}
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the use of pagination to retrieve * large result sets. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.offset * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithPaginationSample" * }</pre> */ public class RunReportWithPaginationSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithPagination(propertyId); } // Runs a report several times, each time retrieving a portion of result using pagination. static void sampleRunReportWithPagination(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDateRanges( DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday")) .addDimensions(Dimension.newBuilder().setName("firstUserSource")) .addDimensions(Dimension.newBuilder().setName("firstUserMedium")) .addDimensions(Dimension.newBuilder().setName("firstUserCampaignName")) .addMetrics(Metric.newBuilder().setName("sessions")) .addMetrics(Metric.newBuilder().setName("keyEvents")) .addMetrics(Metric.newBuilder().setName("totalRevenue")) .setLimit(100000) .setOffset(0) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); RunReportSample.printRunResponseResponse(response); // Run the same report with a different offset value to retrieve the second page of a // response. request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDateRanges( DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday")) .addDimensions(Dimension.newBuilder().setName("firstUserSource")) .addDimensions(Dimension.newBuilder().setName("firstUserMedium")) .addDimensions(Dimension.newBuilder().setName("firstUserCampaignName")) .addMetrics(Metric.newBuilder().setName("sessions")) .addMetrics(Metric.newBuilder().setName("keyEvents")) .addMetrics(Metric.newBuilder().setName("totalRevenue")) .setLimit(100000) .setOffset(100000) .build(); // Make the request. response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
// Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDateRanges([ new DateRange([ 'start_date' => '350daysAgo', 'end_date' => 'yesterday', ]) ]) ->setDimensions([ new Dimension(['name' => 'firstUserSource']), new Dimension(['name' => 'firstUserMedium']), new Dimension(['name' => 'firstUserCampaignName']), ]) ->setMetrics([ new Metric(['name' => 'sessions']), new Metric(['name' => 'keyEvents']), new Metric(['name' => 'totalRevenue']), ]) ->setLimit(100000) ->setOffset(0); $requestCount = 1; printf('Sending request #%d' . PHP_EOL, $requestCount); $response = $client->runReport($request);
Python
request = RunReportRequest( property=f"properties/{property_id}", date_ranges=[DateRange(start_date="365daysAgo", end_date="yesterday")], dimensions=[ Dimension(name="firstUserSource"), Dimension(name="firstUserMedium"), Dimension(name="firstUserCampaignName"), ], metrics=[ Metric(name="sessions"), Metric(name="keyEvents"), Metric(name="totalRevenue"), ], limit=100000, offset=0, ) response = client.run_report(request)
Node.js
const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dateRanges: [ { startDate: '350daysAgo', endDate: 'yesterday', }, ], dimensions: [ { name: 'firstUserSource', }, { name: 'firstUserMedium', }, { name: 'firstUserCampaignName', }, ], metrics: [ { name: 'sessions', }, { name: 'keyEvents', }, { name: 'totalRevenue', }, ], limit: 100000, offset: 0, });
回應中的 rowCount
參數代表資料列的總數。
要求中的 limit
和 offset
值彼此獨立舉例來說
回應顯示 "rowCount": 272345
,您需要 3 個要求,每列 100,000 列
分別擷取所有資料
以下是接下來 100,000 列的要求範例。所有其他參數,例如
dateRange
、dimensions
和 metrics
應與第一個
請求。
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
...
"limit": 100000,
"offset": 100000
}
Java
request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDateRanges( DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday")) .addDimensions(Dimension.newBuilder().setName("firstUserSource")) .addDimensions(Dimension.newBuilder().setName("firstUserMedium")) .addDimensions(Dimension.newBuilder().setName("firstUserCampaignName")) .addMetrics(Metric.newBuilder().setName("sessions")) .addMetrics(Metric.newBuilder().setName("keyEvents")) .addMetrics(Metric.newBuilder().setName("totalRevenue")) .setLimit(100000) .setOffset(100000) .build(); // Make the request. response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response);
PHP
$rowsReceived = count($response->getRows()); $totalRows = $response->getRowCount(); // Run the same report with an increased offset value to retrieve each additional // page until all rows are received. while ($rowsReceived < $totalRows) { $request = $request->setOffset($rowsReceived); $requestCount++; printf('Sending request #%d' . PHP_EOL, $requestCount); $response = $client->runReport($request); $rowsReceived += count($response->getRows()); printRunReportResponseWithPagination($response, $requestCount); }
Python
request = RunReportRequest( property=f"properties/{property_id}", date_ranges=[DateRange(start_date="365daysAgo", end_date="yesterday")], dimensions=[ Dimension(name="firstUserSource"), Dimension(name="firstUserMedium"), Dimension(name="firstUserCampaignName"), ], metrics=[ Metric(name="sessions"), Metric(name="keyEvents"), Metric(name="totalRevenue"), ], limit=100000, offset=100000, ) response = client.run_report(request)
Node.js
const [secondResponse] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dateRanges: [ { startDate: '350daysAgo', endDate: 'yesterday', }, ], dimensions: [ { name: 'firstUserSource', }, { name: 'firstUserMedium', }, { name: 'firstUserCampaignName', }, ], metrics: [ { name: 'sessions', }, { name: 'keyEvents', }, { name: 'totalRevenue', }, ], limit: 100000, offset: 100000, });
您可以使用 offset
值 (例如 200000
或 300000
) 擷取
後續的結果所有其他參數,例如 dateRange
、dimensions
和
metrics
應與第一個要求相同。
使用多個日期範圍
單一報表請求可擷取多個
dateRanges
。舉例來說,這份報表會比較
2022 年 8 月和 2023 年 8 月的前兩週:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [
{
"startDate": "2022-08-01",
"endDate": "2022-08-14"
},
{
"startDate": "2023-08-01",
"endDate": "2023-08-14"
}
],
"dimensions": [{ "name": "platform" }],
"metrics": [{ "name": "activeUsers" }]
}
Java
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient; import com.google.analytics.data.v1beta.DateRange; import com.google.analytics.data.v1beta.Dimension; import com.google.analytics.data.v1beta.Metric; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample application demonstrating the usage of date ranges in a report. * * <p>See * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.date_ranges * for more information. * * <p>Before you start the application, please review the comments starting with "TODO(developer)" * and update the code to use correct values. * * <p>To run this sample using Maven: * * <pre>{@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDateRangesSample" * }</pre> */ public class RunReportWithDateRangesSample { public static void main(String... args) throws Exception { // TODO(developer): Replace with your Google Analytics 4 property ID before running the sample. String propertyId = "YOUR-GA4-PROPERTY-ID"; sampleRunReportWithDateRanges(propertyId); } // Runs a report using two date ranges. static void sampleRunReportWithDateRanges(String propertyId) throws Exception { // Initialize client that will be used to send requests. This client only needs to be created // once, and can be reused for multiple requests. After completing all of your requests, call // the "close" method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty("properties/" + propertyId) .addDateRanges( DateRange.newBuilder().setStartDate("2019-08-01").setEndDate("2019-08-14")) .addDateRanges( DateRange.newBuilder().setStartDate("2020-08-01").setEndDate("2020-08-14")) .addDimensions(Dimension.newBuilder().setName("platform")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\MetricType; use Google\Analytics\Data\V1beta\RunReportRequest; use Google\Analytics\Data\V1beta\RunReportResponse; /** * @param string $propertyID Your GA-4 Property ID * Runs a report using two date ranges. */ function run_report_with_date_ranges(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $propertyId) ->setDateRanges([ new DateRange([ 'start_date' => '2019-08-01', 'end_date' => '2019-08-14', ]), new DateRange([ 'start_date' => '2020-08-01', 'end_date' => '2020-08-14', ]), ]) ->setDimensions([new Dimension(['name' => 'platform'])]) ->setMetrics([new Metric(['name' => 'activeUsers'])]); $response = $client->runReport($request); printRunReportResponseWithDateRanges($response); } /** * Print results of a runReport call. * @param RunReportResponse $response */ function printRunReportResponseWithDateRanges(RunReportResponse $response) { printf('%s rows received%s', $response->getRowCount(), PHP_EOL); foreach ($response->getDimensionHeaders() as $dimensionHeader) { printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL); } foreach ($response->getMetricHeaders() as $metricHeader) { printf( 'Metric header name: %s (%s)' . PHP_EOL, $metricHeader->getName(), MetricType::name($metricHeader->getType()) ); } print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Metric, RunReportRequest, ) from run_report import print_run_report_response def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_report_with_date_ranges(property_id) def run_report_with_date_ranges(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a report using two date ranges.""" client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", date_ranges=[ DateRange(start_date="2019-08-01", end_date="2019-08-14"), DateRange(start_date="2020-08-01", end_date="2020-08-14"), ], dimensions=[Dimension(name="platform")], metrics=[Metric(name="activeUsers")], ) response = client.run_report(request) print_run_report_response(response)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a report using two date ranges. async function runReportWithDateRanges() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dateRanges: [ { startDate: '2019-08-01', endDate: '2019-08-14', }, { startDate: '2020-08-01', endDate: '2020-08-14', }, ], dimensions: [ { name: 'platform', }, ], metrics: [ { name: 'activeUsers', }, ], }); printRunReportResponse(response); } runReportWithDateRanges(); // Prints results of a runReport call. function printRunReportResponse(response) { console.log(`${response.rowCount} rows received`); response.dimensionHeaders.forEach(dimensionHeader => { console.log(`Dimension header name: ${dimensionHeader.name}`); }); response.metricHeaders.forEach(metricHeader => { console.log( `Metric header name: ${metricHeader.name} (${metricHeader.type})` ); }); console.log('Report result:'); response.rows.forEach(row => { console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }
如果在要求中加入多個 dateRanges
,則 dateRange
欄會是
自動加入回覆。如果 dateRange
欄是
date_range_0
,該列資料是屬於第一個日期範圍。當
dateRange
欄是 date_range_1
,該列的資料是第二個日期
範圍。
以下是兩個日期範圍的回應範例:
{
"dimensionHeaders": [
{
"name": "platform"
},
{
"name": "dateRange"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "iOS"
},
{
"value": "date_range_0"
}
],
"metricValues": [
{
"value": "774"
}
]
},
{
"dimensionValues": [
{
"value": "Android"
},
{
"value": "date_range_1"
}
],
"metricValues": [
{
"value": "335"
}
]
},
...
],
}
後續步驟
查看進階功能和即時報表: 概略瞭解 Data API v1 的進階報表功能