Ce guide explique comment créer un rapport de base pour vos données Analytics à l'aide de l'API Google Analytics Data v1. Les rapports de la version 1 de l'API Data sont similaires à Les rapports que vous pouvez générer dans la section Rapports de l'interface Google Analytics l'UI.
Ce guide aborde les principaux aspects de la création de rapports, la fonctionnalité générale de création de rapports de l'onglet API. Data API v1 dispose également de fonctionnalités Realtime les rapports et les rapports sur les entonnoirs.
Nous vous recommandons d'utiliser runReport
pour les requêtes. Il est utilisé dans tous les exemples de ce guide. Voir les options avancées
pour découvrir les autres principales méthodes de création de rapports. Essayez le
l'explorateur de requêtes pour tester votre
requêtes.
Présentation des rapports
Les rapports sont des tableaux de données d'événements pour un propriété Google Analytics : Chaque tableau du rapport comporte le paramètre les dimensions et les métriques requises dans votre requête, en les plaçant dans des lignes individuelles.
utiliser des filtres pour ne renvoyer que les lignes correspondant à une condition donnée ; pagination pour parcourir les résultats.
Voici un exemple de tableau de rapport comportant une dimension (Country
) et une métrique
(activeUsers
):
Pays | Utilisateurs actifs |
---|---|
Japon | 2541 |
France | 12 |
Spécifier une source de données
Pour chaque demande runReport
, vous devez spécifier une propriété Google Analytics
ID. La propriété Analytics que vous spécifiez est utilisée comme ensemble de données
cette requête. Exemple :
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
La réponse à cette demande n'inclut que les données de la propriété Analytics.
que vous spécifiez comme GA_PROPERTY_ID
.
Si vous utilisez les bibliothèques clientes de l'API Data, spécifiez les données
source dans le paramètre property
, sous la forme suivante :
properties/GA_PROPERTY_ID
Consultez le
guide de démarrage rapide pour obtenir des exemples d'utilisation du
bibliothèques clientes.
Voir Envoyer des événements du protocole de mesure à Google Analytics si vous si vous souhaitez inclure les événements du protocole de mesure dans vos rapports.
Générer un rapport
Pour générer un rapport,
objet RunReportRequest
.
Nous vous recommandons de commencer par les paramètres suivants:
- Une entrée valide dans le champ
dateRanges
- Au moins une entrée valide dans
dimensions
. - Au moins une entrée valide dans le champ
metrics
.
Voici un exemple de requête avec les champs recommandés:
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();
Requête pour des métriques
Metrics
sont les mesures quantitatives de vos
les données d'événement. Vous devez spécifier au moins une métrique dans vos requêtes runReport
.
Consultez la section Métriques de l'API pour obtenir la liste complète des métriques que vous pouvez interroger.
Voici un exemple de requête qui présente trois métriques, regroupées par valeur
Dimension 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>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}` ); }); }
Voici un exemple de réponse affichant 1 135 utilisateurs actifs, 512 nouveaux utilisateurs et
73.0841 Revenu total dans la devise de votre propriété Analytics à cette date
20231025
(25 octobre 2023),
"rows": [
...
{
"dimensionValues": [
{
"value": "20231025"
}
],
"metricValues": [
{
"value": "1135"
},
{
"value": "512"
},
{
"value": "73.0841"
}
]
},
...
],
Lire la réponse
La réponse au rapport contient un en-tête et
de lignes de données. L'en-tête se compose de
DimensionHeaders
et
MetricHeaders
, qui répertorie les colonnes de
. Chaque ligne se compose de
DimensionValues
et
MetricValues
L'ordre des
dans la requête, l'en-tête et les lignes sont les mêmes.
Voici un exemple de réponse à l'exemple de requête précédent:
{
"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
}
Regrouper et filtrer des données
Les dimensions sont des attributs qualitatifs que vous pouvez utiliser
pour regrouper et filtrer vos données. Par exemple, la dimension city
indique
ville, comme Paris
ou New York
, d'où provient chaque événement. Les dimensions sont
facultatif pour les requêtes runReport
, et vous pouvez utiliser jusqu'à neuf dimensions par
requête.
Consultez les dimensions d'API pour obtenir la liste complète des pour regrouper et filtrer vos données.
Groupe
Voici un exemple de requête qui regroupe les utilisateurs actifs en trois dimensions:
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}` ); }); }
Voici un exemple de ligne de rapport correspondant à la demande précédente. Cette ligne indique 47 utilisateurs actifs pendant la période spécifiée, avec des événements provenant du Cap en Afrique du Sud.
"rows": [
...
{
"dimensionValues": [
{
"value": "South Africa"
},
{
"value": "Western Cape"
},
{
"value": "Cape Town"
}
],
"metricValues": [
{
"value": "47"
}
]
},
...
],
Filtre
Vous générez des rapports contenant des données uniquement pour des valeurs de dimension spécifiques. Pour filtrer
des dimensions, spécifiez un FilterExpression
dans
dimensionFilter
.
Voici un exemple qui renvoie un rapport de série temporelle de eventCount
, lorsque
eventName
est first_open
pour chaque 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>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}` ); }); }
Dans cet autre exemple avec FilterExpression
,
où andGroup
inclut uniquement les données qui répondent à tous les critères des expressions
liste. Ce dimensionFilter
est sélectionné lorsque browser
est défini sur Chrome
et
countryId
est 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}` ); }); }
Une orGroup
inclut des données qui répondent à l'un des critères des expressions
liste.
notExpression
exclut les données correspondant à son expression interne. Voici un
dimensionFilter
qui renvoie des données uniquement lorsque pageTitle
n'est pas My
Homepage
. Le rapport affiche des données d'événement pour chaque pageTitle
autre que 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>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}` ); }); }
Un inListFilter
correspond aux données de n'importe quelle valeur de la liste. Voici un
dimensionFilter
qui renvoie les données d'événement où eventName
correspond à l'une des valeurs suivantes :
purchase
, in_app_purchase
et 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}` ); }); }
Parcourir les rapports longs
Par défaut, le rapport ne contient que les 10 000 premières lignes de données d'événement. À
afficher jusqu'à 100 000 lignes dans le rapport, vous pouvez inclure "limit": 100000
dans
la
RunReportRequest
Pour les rapports de plus de 100 000 lignes, vous devez envoyer une série de demandes et parcourir les résultats. Par exemple, voici une requête pour le premier 100 000 lignes:
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("conversions")) .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("conversions")) .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' => 'conversions']), 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="conversions"), 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: 'conversions', }, { name: 'totalRevenue', }, ], limit: 100000, offset: 0, });
Le paramètre rowCount
dans la réponse indique le nombre total de lignes,
indépendamment des valeurs limit
et offset
de la requête. Par exemple, si
la réponse indique "rowCount": 272345
, vous avez besoin de trois requêtes de 100 000 lignes
pour récupérer toutes les données.
Voici un exemple de requête pour les 100 000 prochaines lignes. Tous les autres paramètres, tels que
dateRange
, dimensions
et metrics
doivent être identiques au premier
requête.
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("conversions")) .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="conversions"), 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: 'conversions', }, { name: 'totalRevenue', }, ], limit: 100000, offset: 100000, });
Vous pouvez utiliser les valeurs offset
, par exemple 200000
ou 300000
, pour récupérer
les résultats suivants. Tous les autres paramètres, tels que dateRange
, dimensions
et
metrics
doit être identique à la première requête.
Utiliser plusieurs plages de dates
Une demande de rapport peut récupérer les données de plusieurs
dateRanges
Par exemple, ce rapport compare
au cours des deux premières semaines d'août 2022 et 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>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}` ); }); }
Lorsque vous incluez plusieurs dateRanges
dans une requête, une colonne dateRange
est
automatiquement ajoutée à la réponse. Lorsque la colonne dateRange
est
date_range_0
, les données de cette ligne concernent la première période. Lorsque
La valeur de la colonne "dateRange
" est date_range_1
, les données de cette ligne concernent la deuxième date
la plage d'adresses IP.
Voici un exemple de réponse pour deux plages de dates:
{
"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"
}
]
},
...
],
}
Étapes suivantes
Découvrez les fonctionnalités avancées et les rapports en temps réel pour présentation des fonctionnalités de reporting plus avancées de l'API Data v1.