W tym samouczku utworzysz i wyślesz żądania list
do interfejsu Google Analytics Data API w wersji 1, a potem wyświetlisz odpowiedzi, aby skonfigurować i potwierdzić dostęp do interfejsu API.
Możesz wykonać ten samouczek za pomocą pakietu SDK lub interfejsu REST API w środowisku lokalnym albo instancji maszyny wirtualnej Google Cloud.
Oto podsumowanie kroków:
- skonfigurować projekt Google Cloud i włączyć interfejs Google Analytics Data API w wersji 1;
- Na komputerze lokalnym lub instancji maszyny wirtualnej w chmurze:
- Instalowanie, inicjowanie i uwierzytelnianie się w Google Cloud.
- Zainstaluj pakiet SDK dla wybranego języka (opcjonalnie).
- skonfigurować uwierzytelnianie,
- Skonfiguruj dostęp do Google Analytics.
- Skonfiguruj pakiet SDK.
- Wywołaj interfejs API.
Konfigurowanie projektu Google Cloud
Kliknij przycisk Włącz interfejs Google Analytics Data API w wersji 1, aby wybrać lub utworzyć nowy projekt Google Cloud i automatycznie włączyć interfejs Google Analytics Data API w wersji 1.
Włączanie interfejsu Google Analytics Data API w wersji 1Konfigurowanie Google Cloud
Na komputerze lokalnym lub instancji maszyny wirtualnej w Google Cloud skonfiguruj Google Cloud i zaloguj się na swoje konto.
-
Zainstaluj i inicjuj Google Cloud.
-
Aby mieć pewność, że komponenty
gcloud
są aktualne, uruchom to polecenie.gcloud components update
Aby uniknąć podawania identyfikatora projektu w Google Cloud, możesz użyć polecenia gcloud config set
, aby ustawić domyślny projekt i region.
Konfigurowanie uwierzytelniania
W tym krótkim wprowadzeniu użyjemy domyślnych danych logowania aplikacji, aby automatycznie znajdować dane logowania na podstawie środowiska aplikacji. Dzięki temu nie musisz zmieniać kodu klienta, aby uwierzytelnić aplikację.
Interfejs Google Analytics Data API w wersji 1 obsługuje konta użytkowników i konta usługi:
- Konta użytkowników reprezentują programistę, administratora lub dowolną inną osobę korzystającą z interfejsów API i usług Google.
- Konta usługi nie reprezentują konkretnego użytkownika. Umożliwiają one zarządzanie uwierzytelnianiem i autoryzacją, gdy nie jest bezpośrednio zaangażowana osoba, np. gdy aplikacja musi uzyskać dostęp do zasobów Google Cloud.
Więcej informacji o uwierzytelnianiu i konfiguracji danych logowania do konta w aplikacji znajdziesz w artykule Metody uwierzytelniania w Google.
Konto użytkownika
Wygeneruj lokalny plik domyślnych danych uwierzytelniających aplikacji (ADC), uruchamiając to polecenie. To polecenie uruchamia proces internetowy, w którym podajesz dane logowania użytkownika.
gcloud auth application-default login --scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly"
Pamiętaj, aby w komendach podać zakresy wymagane przez interfejs Google Analytics Data API w wersji 1. Więcej informacji znajdziesz w artykule Konfigurowanie domyślnego uwierzytelniania aplikacji.
Konto usługi
Aby uwierzytelnić się za pomocą konta usługi przy użyciu instancji maszyny wirtualnej w Google Cloud:
- Utwórz konto usługi
- Załącz konto usługi do instancji maszyny wirtualnej w chmurze, uruchamiając to polecenie gcloud CLI:
gcloud compute instances stop YOUR-VM-INSTANCE-ID
gcloud compute instances set-service-account YOUR-VM-INSTANCE-ID \
--service-account YOUR-SERVICE-ACCOUNT-EMAIL-ALIAS \
--scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly"
Pamiętaj, aby w komendach podać zakresy wymagane przez interfejs Google Analytics Data API w wersji 1. Więcej informacji znajdziesz w artykule Konfigurowanie domyślnego uwierzytelniania aplikacji.
Konfigurowanie dostępu do Google Analytics
Przyznaj Google Analytics dostęp do adresu e-mail powiązanego z kontem użytkownika lub usługi.
Konfigurowanie pakietu SDK pod kątem języka programowania
Zainstaluj na komputerze pakiet SDK dla wybranego języka programowania.
Java
PHP
Python
Node.js
.NET
Ruby
Przeczytaj
go get google.golang.org/genproto/googleapis/analytics/data/v1beta
REST
Aby skonfigurować zmienne środowiskowe, wpisz:
Zastąp PROJECT_ID
identyfikatorem swojego projektu Google Cloud, a PROPERTY_ID
identyfikatorem swojej usługi w Google Analytics.
export PROJECT_ID=PROJECT_ID
export PROPERTY_ID=PROPERTY_ID
Wywoływanie interfejsu API
Aby wykonać pierwsze wywołanie, uruchom ten kod:
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.Row; import com.google.analytics.data.v1beta.RunReportRequest; import com.google.analytics.data.v1beta.RunReportResponse; /** * Google Analytics Data API sample quickstart application. * * <p>This application demonstrates the usage of the Analytics Data API using service account * credentials. * * <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.QuickstartSample" * }</pre> */ public class QuickstartSample { 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); } // This is an example snippet that calls the Google Analytics Data API and runs a simple report // on the provided GA4 property id. 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("city")) .addMetrics(Metric.newBuilder().setName("activeUsers")) .addDateRanges(DateRange.newBuilder().setStartDate("2020-03-31").setEndDate("today")) .build(); // Make the request. RunReportResponse response = analyticsData.runReport(request); System.out.println("Report result:"); // Iterate through every row of the API response. for (Row row : response.getRowsList()) { System.out.printf( "%s, %s%n", row.getDimensionValues(0).getValue(), row.getMetricValues(0).getValue()); } } } }
PHP
require 'vendor/autoload.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\RunReportRequest; /** * TODO(developer): Replace this variable with your Google Analytics 4 * property ID before running the sample. */ $property_id = 'YOUR-GA4-PROPERTY-ID'; // Using a default constructor instructs the client to use the credentials // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunReportRequest()) ->setProperty('properties/' . $property_id) ->setDateRanges([ new DateRange([ 'start_date' => '2020-03-31', 'end_date' => 'today', ]), ]) ->setDimensions([new Dimension([ 'name' => 'city', ]), ]) ->setMetrics([new Metric([ 'name' => 'activeUsers', ]) ]); $response = $client->runReport($request); // Print results of an API call. 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, RunReportRequest, ) def sample_run_report(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a simple report on a Google Analytics 4 property.""" # TODO(developer): Uncomment this variable and replace with your # Google Analytics 4 property ID before running the sample. # property_id = "YOUR-GA4-PROPERTY-ID" # Using a default constructor instructs the client to use the credentials # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. client = BetaAnalyticsDataClient() request = RunReportRequest( property=f"properties/{property_id}", dimensions=[Dimension(name="city")], metrics=[Metric(name="activeUsers")], date_ranges=[DateRange(start_date="2020-03-31", end_date="today")], ) response = client.run_report(request) print("Report result:") for row in response.rows: print(row.dimension_values[0].value, row.metric_values[0].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'); // Using a default constructor instructs the client to use the credentials // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a simple report. async function runReport() { const [response] = await analyticsDataClient.runReport({ property: `properties/${propertyId}`, dateRanges: [ { startDate: '2020-03-31', endDate: 'today', }, ], dimensions: [ { name: 'city', }, ], metrics: [ { name: 'activeUsers', }, ], }); console.log('Report result:'); response.rows.forEach((row) => { console.log(row.dimensionValues[0], row.metricValues[0]); }); } runReport();
.NET
using Google.Analytics.Data.V1Beta; using System; namespace AnalyticsSamples { class QuickStart { static void SampleRunReport(string propertyId="YOUR-GA4-PROPERTY-ID") { /** * TODO(developer): Uncomment this variable and replace with your * Google Analytics 4 property ID before running the sample. */ // propertyId = "YOUR-GA4-PROPERTY-ID"; // Using a default constructor instructs the client to use the credentials // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. BetaAnalyticsDataClient client = BetaAnalyticsDataClient.Create(); // Initialize request argument(s) RunReportRequest request = new RunReportRequest { Property = "properties/" + propertyId, Dimensions = { new Dimension{ Name="city"}, }, Metrics = { new Metric{ Name="activeUsers"}, }, DateRanges = { new DateRange{ StartDate="2020-03-31", EndDate="today"}, }, }; // Make the request RunReportResponse response = client.RunReport(request); Console.WriteLine("Report result:"); foreach(Row row in response.Rows) { Console.WriteLine("{0}, {1}", row.DimensionValues[0].Value, row.MetricValues[0].Value); } } static int Main(string[] args) { if (args.Length > 0) { SampleRunReport(args[0]); } else { SampleRunReport(); } return 0; } } }
REST
Aby wysłać to żądanie, uruchom polecenie curl z wiersza poleceń lub dodaj wywołanie REST w aplikacji.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ -H "Content-Type: application/json" \ -d ' { "dateRanges": [ { "startDate": "2025-01-01", "endDate": "2025-02-01" } ], "dimensions": [ { "name": "country" } ], "metrics": [ { "name": "activeUsers" } ] }' https://analyticsdata.googleapis.com/v1beta/properties/${PROPERTY_ID}:runReport
Odpowiedź będzie zawierać raport z aktywnymi użytkownikami podzielonymi według kraju, np.:
{
"dimensionHeaders": [
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "United States"
}
],
"metricValues": [
{
"value": "3242"
}
]
},
{
"dimensionValues": [
{
"value": "(not set)"
}
],
"metricValues": [
{
"value": "3015"
}
]
},
{
"dimensionValues": [
{
"value": "India"
}
],
"metricValues": [
{
"value": "805"
}
]
}
],
"rowCount": 3,
"metadata": {
"currencyCode": "USD",
"timeZone": "America/Los_Angeles"
},
"kind": "analyticsData#runReport"
}