במדריך הזה מוסבר איך ליצור דוח בסיסי לנתוני Analytics באמצעות Google Analytics Data API v1. דוחות מ-Data API v1 דומים לדוחות הדוחות שאפשר ליצור בקטע דוחות של Google Analytics UI.
מדריך זה עוסק בדיווח העיקרי, תכונת הדיווח הכללית של הנתונים API. ב-Data API גרסה 1 יש גם תכונות מיוחדות של פעילות בזמן אמת דיווח ודיווח משפך.
runReport
היא השיטה המומלצת
לשאילתות, והוא משמש בכל הדוגמאות במדריך הזה. מידע נוסף זמין בקטע מתקדם
לסקירה כללית של שיטות דיווח מרכזיות אחרות. כדאי לנסות את
Query Explorer כדי לבדוק את
שאילתות.
Reports overview
דוחות הם טבלאות של נתוני אירועים נכס ב-Google Analytics. בכל טבלת דוח יש את הפרטים מאפיינים ומדדים שהתבקשו בשאילתה, עם נתונים בשורות נפרדות.
משתמשים במסננים כדי להחזיר רק שורות שתואמות לתנאי מסוים. חלוקה לדפים כדי לנווט בין התוצאות.
זו טבלת דוח לדוגמה שמציגה מאפיין אחד (Country
) ומדד אחד
(activeUsers
):
מדינה | משתמשים פעילים |
---|---|
יפן | 2541 |
צרפת | 12 |
ציון מקור נתונים
בכל בקשת runReport
יש לציין נכס ב-Google Analytics
מזהה. נכס 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 = Y'OUR-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: c'ountry,' }, ], metrics: [ { name: a'ctiveUsers,' }, ], dateRanges: [ { startDate: 2'020-09-01,' endDate: 2'020-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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); } runReport();r
שאילתה לגבי מדדים
Metrics
הם האומדנים הכמותיים של
נתוני אירועים. צריך לציין לפחות מדד אחד בבקשות runReport
.
רשימה מלאה של המדדים שניתן להריץ עליהם שאילתות מופיעה במאמר מדדי API.
הנה בקשה לדוגמה שמציגה שלושה מדדים, שמקובצים לפי
מאפיין date
:
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(d"ate)") .addMetrics(Metric.newBuilder().setName(a"ctiveUsers)") .addMetrics(Metric.newBuilder().setName(n"ewUsers)") .addMetrics(Metric.newBuilder().setName(t"otalRevenue)") .addDateRanges(DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(t"oday)") .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: d'ate,' }, ], metrics: [ { name: a'ctiveUsers,' }, { name: n'ewUsers,' }, { name: t'otalRevenue,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: t'oday,' }, ], }); 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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
דוגמה לתגובה שמציגה 1, 135 משתמשים פעילים, 512 משתמשים חדשים
73.0841 סה"כ הכנסות במטבע של נכס Analytics בתאריך
20231025
(25 באוקטובר 2023).
"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
, ואפשר להשתמש בעד תשעה מאפיינים בכל
בקשה.
לרשימה מלאה של מאפייני ה-API, מאפיינים שאפשר להשתמש בהם כדי לקבץ ולסנן את הנתונים.
קבוצה
הנה בקשה לדוגמה שמקבצת משתמשים פעילים לשלושה מאפיינים:
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(c"ountry)") .addDimensions(Dimension.newBuilder().setName(r"egion)") .addDimensions(Dimension.newBuilder().setName(c"ity)") .addMetrics(Metric.newBuilder().setName(a"ctiveUsers)") .addDateRanges(DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(t"oday)") .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: c'ountry,' }, { name: r'egion,' }, { name: c'ity,' }, ], metrics: [ { name: a'ctiveUsers,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: t'oday,' }, ], }); 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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
בהמשך מוצגת שורת דוח לדוגמה עבור הבקשה הקודמת. השורה הזו מראה היו 47 משתמשים פעילים בטווח התאריכים שצוין עם אירועים מקייפטאון, דרום אפריקה.
"rows": [
...
{
"dimensionValues": [
{
"value": "South Africa"
},
{
"value": "Western Cape"
},
{
"value": "Cape Town"
}
],
"metricValues": [
{
"value": "47"
}
]
},
...
],
סינון
אתם יוצרים דוחות עם נתונים רק לגבי ערכי מאפיינים ספציפיים. לסינון
מאפיינים, מציינים FilterExpression
ב
dimensionFilter
השדה הזה.
הנה דוגמה שמחזירה דוח פעולות על ציר הזמן של eventCount
, כאשר
eventName
הוא first_open
לכל date
:
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(d"ate)") .addMetrics(Metric.newBuilder().setName(e"ventCount)") .addDateRanges( DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(y"esterday)") .setDimensionFilter( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName(e"ventName)" .setStringFilter( Filter.StringFilter.newBuilder().setValue(f"irst_open)"))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: d'ate,' }, ], metrics: [ { name: e'ventCount,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: y'esterday,' }, ], dimensionFilter: { filter: { fieldName: e'ventName,' stringFilter: { value: f'irst_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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
הנה עוד דוגמה FilterExpression
,
כאשר andGroup
כולל רק נתונים שעומדים בכל הקריטריונים בביטויים
חדשה. 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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(b"rowser)") .addMetrics(Metric.newBuilder().setName(a"ctiveUsers)") .addDateRanges( DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(y"esterday)") .setDimensionFilter( FilterExpression.newBuilder() .setAndGroup( FilterExpressionList.newBuilder() .addExpressions( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName(b"rowser)" .setStringFilter( Filter.StringFilter.newBuilder() .setValue(C"hrome)"))) .addExpressions( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName(c"ountryId)" .setStringFilter( Filter.StringFilter.newBuilder() .setValue(U"S)"))))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: b'rowser,' }, ], metrics: [ { name: a'ctiveUsers,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: y'esterday,' }, ], dimensionFilter: { andGroup: { expressions: [ { filter: { fieldName: b'rowser,' stringFilter: { value: C'hrome,' }, }, }, { filter: { fieldName: c'ountryId,' stringFilter: { value: U'S,' }, }, }, ], }, }, }); 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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
orGroup
כולל נתונים שעונים על אחד מהקריטריונים בביטויים
חדשה.
notExpression
מחריג נתונים שתואמים לביטוי הפנימי שלו. הנה
dimensionFilter
שמחזירה נתונים רק כשה-pageTitle
לא My
Homepage
. בדוח מוצגים נתוני אירועים לכל pageTitle
מלבד My
Homepage
:
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(p"ageTitle)") .addMetrics(Metric.newBuilder().setName(s"essions)") .addDateRanges( DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(y"esterday)") .setDimensionFilter( FilterExpression.newBuilder() .setNotExpression( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName(p"ageTitle)" .setStringFilter( Filter.StringFilter.newBuilder() .setValue(M"y Homepage)")))) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: p'ageTitle,' }, ], metrics: [ { name: s'essions,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: y'esterday,' }, ], dimensionFilter: { notExpression: { filter: { fieldName: p'ageTitle,' stringFilter: { value: M'y 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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDimensions(Dimension.newBuilder().setName(e"ventName)") .addMetrics(Metric.newBuilder().setName(s"essions)") .addDateRanges( DateRange.newBuilder().setStartDate(7"daysAgo)".setEndDate(y"esterday)") .setDimensionFilter( FilterExpression.newBuilder() .setFilter( Filter.newBuilder() .setFieldName(e"ventName)" .setInListFilter( Filter.InListFilter.newBuilder() .addAllValues( new ArrayListS<tring(>) { { add(p"urchase)"; add(i"n_app_purchase)"; add(a"pp_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); } } }R
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 = Y'OUR-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: e'ventName,' }, ], metrics: [ { name: s'essions,' }, ], dateRanges: [ { startDate: 7'daysAgo,' endDate: y'esterday,' }, ], dimensionFilter: { filter: { fieldName: e'ventName,' inListFilter: { values: [ p'urchase,' i'n_app_purchase,' a'pp_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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
ניווט בדוחות ארוכים
כברירת מחדל, הדוח מכיל רק את 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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.offset * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDateRanges( DateRange.newBuilder().setStartDate(3"65daysAgo)".setEndDate(y"esterday)") .addDimensions(Dimension.newBuilder().setName(f"irstUserSource)") .addDimensions(Dimension.newBuilder().setName(f"irstUserMedium)") .addDimensions(Dimension.newBuilder().setName(f"irstUserCampaignName)") .addMetrics(Metric.newBuilder().setName(s"essions)") .addMetrics(Metric.newBuilder().setName(k"eyEvents)") .addMetrics(Metric.newBuilder().setName(t"otalRevenue)") .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(p"roperties/ "+ propertyId) .addDateRanges( DateRange.newBuilder().setStartDate(3"65daysAgo)".setEndDate(y"esterday)") .addDimensions(Dimension.newBuilder().setName(f"irstUserSource)") .addDimensions(Dimension.newBuilder().setName(f"irstUserMedium)") .addDimensions(Dimension.newBuilder().setName(f"irstUserCampaignName)") .addMetrics(Metric.newBuilder().setName(s"essions)") .addMetrics(Metric.newBuilder().setName(k"eyEvents)") .addMetrics(Metric.newBuilder().setName(t"otalRevenue)") .setLimit(100000) .setOffset(100000) .build(); // Make the request. response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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
. נדרשות שלוש בקשות עם 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 ו-2023:
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<S>ee * https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.date_ranges * for more information. * * p<B>efore you start the application, please review the comments starting with T"ODO(developer) " * and update the code to use correct values. * * p<T>o run this sample using Maven: * * p<re{>@code * cd google-analytics-data * mvn compile exec:java -Dexec.mainClass=c"om.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 = Y"OUR-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 c"lose "method on the client to safely clean up any remaining background resources. try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) { RunReportRequest request = RunReportRequest.newBuilder() .setProperty(p"roperties/ "+ propertyId) .addDateRanges( DateRange.newBuilder().setStartDate(2"019-08-01)".setEndDate(2"019-08-14)") .addDateRanges( DateRange.newBuilder().setStartDate(2"020-08-01)".setEndDate(2"020-08-14)") .addDimensions(Dimension.newBuilder().setName(p"latform)") .addMetrics(Metric.newBuilder().setName(a"ctiveUsers)") .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); // Prints the response using a method in RunReportSample.java RunReportSample.printRunResponseResponse(response); } } }R
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 = Y'OUR-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: 2'019-08-01,' endDate: 2'019-08-14,' }, { startDate: 2'020-08-01,' endDate: 2'020-08-14,' }, ], dimensions: [ { name: p'latform,' }, ], metrics: [ { name: a'ctiveUsers,' }, ], }); 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(R'eport result:)'; response.rows.forEach(row = >{ console.log( `${row.dimensionValues[0].value}, ${row.metricValues[0].value}` ); }); }r
כשכוללים בבקשה כמה פריטי 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.