Przejdź na Google Analytics Admin API w wersji 1

Interfejs API jest nadal obsługiwany zarówno w wersji alfa, jak i beta. Wersja beta zawiera podzbiór funkcji dostępnych w wersji alfa, które są uważane za stabilne i w przyszłości nie powinny podlegać znaczącej zmianie. Nowe funkcje będą dodawane do wersji beta w chwili ich dojrzewania.

W tym dokumencie znajdziesz instrukcje przenoszenia istniejącego kodu z interfejsu Google Analytics Management API w wersji 3 do Google Analytics Admin API w wersji 1. Podajemy w nim krótkie podsumowanie najważniejszych różnic między tymi interfejsami.

Dlaczego muszę przeprowadzić migrację?

Jeśli Twoja aplikacja wymaga utworzenia lub skonfigurowania usługi w Google Analytics 4, musi korzystać z interfejsu Admin API w wersji 1. Interfejs Management API w wersji 3 działa tylko z usługami Universal Analytics, a interfejs Admin API v1 – tylko z usługami Google Analytics 4.

Wymagania wstępne

Aby zapoznać się z podstawowymi informacjami o interfejsie Admin API w wersji 1, przeczytaj krótki przewodnik.

Rozpocznij

Zacznij od przygotowania usługi w Google Analytics 4, włączenia interfejsu Admin API w wersji 1, a następnie skonfigurowania biblioteki klienta interfejsu API odpowiedniej dla Twojej platformy.

Przygotowanie usługi w Google Analytics 4

Zanim przeniesiesz kod, aby obsługiwać interfejs Admin API w wersji 1, musisz przenieść witrynę do usługi w Google Analytics 4.

Włącz API

Kliknij ten przycisk, aby automatycznie włączyć interfejs Admin API w wersji 1 w wybranym projekcie Google Cloud.

Włączanie interfejsu Google Analytics Admin API

Korzystanie z biblioteki klienta

Instalowanie biblioteki klienta

Jeśli używasz biblioteki klienta, musisz zainstalować bibliotekę klienta interfejsu Admin API w wersji 1 dla swojego języka programowania.

Inicjowanie biblioteki klienta

Biblioteki klienta interfejsu Admin API w wersji 1 zostały zaprojektowane tak, aby umożliwić Ci szybkie rozpoczęcie pracy. Domyślnie biblioteki klienta próbują automatycznie znaleźć dane logowania do konta usługi.

Łatwym sposobem podania danych logowania na konto usługi jest ustawienie zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS. Klient interfejsu API użyje wartości tej zmiennej, aby znaleźć plik JSON klucza konta usługi.

Na przykład możesz ustawić dane logowania na konto usługi, uruchamiając poniższe polecenie i korzystając ze ścieżki do pliku JSON konta usługi:

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Poniżej znajdziesz fragmenty kodu często używane do inicjowania bibliotek klienta interfejsu Admin API w wersji 1.

Java

    try (AnalyticsAdminServiceClient analyticsAdmin = AnalyticsAdminServiceClient.create()) {

Python

client = AlphaAnalyticsAdminClient()

.NET

AlphaAnalyticsAdminClient client = AlphaAnalyticsAdminClient.Create();

PHP

$client = new AlphaAnalyticsAdminClient();

Node.js

  // Imports the Google Analytics Data API client library.
  const {AlphaAnalyticsAdminClient} = require('@google-analytics/admin');

  // Using a default constructor instructs the client to use the credentials
  // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
  const analyticsAdminClient = new AlphaAnalyticsAdminClient();

Zamiast używać zmiennej środowiskowej możesz też bezpośrednio przekazać dane logowania do instancji klienta interfejsu API podczas inicjowania usługi.

Jeśli nie używasz biblioteki klienta

Jeśli używasz interfejsu Management API w wersji 3 bez biblioteki klienta i chcesz nadal to robić za pomocą interfejsu Admin API w wersji 1, możesz nadal używać swoich danych logowania.

Musisz użyć nowego dokumentu dotyczącego punktu końcowego i wykrywania HTTP dostępnego w interfejsie Admin API:

Jeśli Twój kod korzysta z dokumentu Discovery, musisz go zaktualizować do dokumentu wykrywania udostępnionego przez interfejs Admin API w wersji 1:

Po zaktualizowaniu punktu końcowego musisz zapoznać się z nową strukturą żądań i pojęciami związanymi z interfejsem Admin API, aby zaktualizować zapytanie JSON.

Częste zadania

Zarządzaj kontami

Admin API w wersji 1 udostępnia zestaw metod zarządzania kontem i usługami w Google Analytics, które są porównywalne z interfejsem Management API w wersji 3. Ponadto interfejs Admin API w wersji 1 umożliwia obsługę administracyjną, usuwanie i aktualizowanie kont Google Analytics.

  • Metody zarządzania usługami w interfejsie Admin API w wersji 1 obsługują tylko usługi Google Analytics 4.

  • Pojęcie widoków (profili) nie jest dostępne w interfejsie Admin API w wersji 1.

  • Ponieważ w Google Analytics 4 wprowadziliśmy strumienie danych, niektóre informacje nie są już widoczne na poziomie usługi. Na przykład pole websiteUrl znajduje się teraz w elemencie DataStream, a nie w obiekcie właściwości.

Wyświetlenie listy podsumowań kont

Metoda accountSummaries interfejsu Admin API zwraca uproszczone podsumowania wszystkich kont dostępnych dla elementu wywołującego, podobnie jak w przypadku metody accountSummaries interfejsu Management API w wersji 3.

Ważną różnicą jest to, że interfejs Admin API w wersji 1 zwraca tylko informacje o usługach w Google Analytics 4, a odpowiedzi interfejsu Management API w wersji 3 zawierają dane o usługach utworzonych w Universal Analytics. Nie można pobierać informacji o obu typach właściwości za pomocą jednego wywołania.

W Google Analytics 4 nie ma widoków (profili), więc podsumowania kont zwracane przez interfejs Admin API nie zawierają informacji o widokach (profilach).

Dane podsumowania konta Google Analytics 4 są ograniczone do zasobów i wyświetlanych nazw kont lub usług dostępnych dla bieżącego użytkownika.

Użyj nazw zasobów zwróconych w polach account i property odpowiedzi podsumowującej, aby pobrać pełne dane konfiguracji przez wywołanie metod account.get i property.get.

Żądanie dotyczące interfejsu Admin API w wersji 1

GET https://analyticsadmin.googleapis.com/v1beta/accountSummaries?key=[YOUR_API_KEY]

Odpowiedź interfejsu Admin API w wersji 1

{
  "accountSummaries": [
    {
      "name": "accountSummaries/XXXXXX",
      "account": "accounts/XXXXXX",
      "displayName": "Test",
      "propertySummaries": [
        {
          "property": "properties/XXXXXX",
          "displayName": "Test App"
        }
      ]
    },
    ...
}

Żądanie do interfejsu Management API w wersji 3

GET https://analytics.googleapis.com/analytics/v3/management/accountSummaries?key=[YOUR_API_KEY]

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "kind": "analytics#accountSummaries",
  "username": "XXXXXX",
  "totalResults": 9,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX",
      "kind": "analytics#accountSummary",
      "name": "Test Account",
      "webProperties": [
        {
          "kind": "analytics#webPropertySummary",
          "id": "UA-XXXXXX",
          "name": "Test Property",
          "internalWebPropertyId": "XXXXXX",
          "level": "STANDARD",
          "websiteUrl": "XXXXXX",
          "profiles": [
            {
              "kind": "analytics#profileSummary",
              "id": "XXXXXX",
              "name": "Test Profile",
              "type": "WEB"
            }
          ]
        },
        ...
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient


def list_account_summaries(transport: str = None) -> None:
    """
    Prints summaries of all accounts accessible by the caller.

    Args:
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_account_summaries()

    print("Result:")
    for account_summary in results:
        print("-- Account --")
        print(f"Resource name: {account_summary.name}")
        print(f"Account name: {account_summary.account}")
        print(f"Display name: {account_summary.display_name}")
        print()
        for property_summary in account_summary.property_summaries:
            print("-- Property --")
            print(f"Property resource name: {property_summary.property}")
            print(f"Property display name: {property_summary.display_name}")
            print()


Wyświetlanie listy kont

Metoda accounts.list interfejsu Admin API w wersji 1 zwraca wszystkie konta dostępne dla elementu wywołującego, podobnie jak w przypadku metody accounts.list interfejsu Management API w wersji 3.

Żądanie dotyczące interfejsu Admin API w wersji 1

GET https://analyticsadmin.googleapis.com/v1beta/accounts?key=[YOUR_API_KEY]

Odpowiedź interfejsu Admin API w wersji 1

{
  "accounts": [
    {
      "name": "accounts/XXXXXX",
      "createTime": "2020-02-21T00:17:33.282Z",
      "updateTime": "2021-01-07T02:47:57.386Z",
      "displayName": "Test Account",
      "regionCode": "US"
    },
  ...
}

Żądanie do interfejsu Management API w wersji 3

GET https://analytics.googleapis.com/analytics/v3/management/accounts?key=[YOUR_API_KEY]

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "kind": "analytics#accounts",
  "username": "XXXXXX",
  "totalResults": 9,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX",
      "kind": "analytics#account",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "Test Account",
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "READ_AND_ANALYZE"
        ]
      },
      "created": "2020-02-21T00:17:33.282Z",
      "updated": "2021-01-07T02:47:57.386Z",
      "childLink": {
        "type": "analytics#webproperties",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties"
      }
    },
    ...
}

Pamiętaj, że odpowiedź interfejsu Admin API w wersji 1 nie zawiera informacji o obowiązujących uprawnieniach użytkowników ani pola childLink, które było w interfejsie Management API w wersji 3.

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient

from accounts_get import print_account


def list_accounts(transport: str = None):
    """
    Lists the Google Analytics accounts available to the current user.

    Args:
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_accounts()

    print("Result:")
    for account in results:
        print_account(account)


Zarządzaj usługami

Wyświetlanie listy właściwości

Metoda properties.list interfejsu Admin API w wersji 1 zwraca wszystkie usługi Google Analytics 4 dostępne dla elementu wywołującego, podobnie jak w przypadku webproperties.list interfejsu Management API w wersji 3, która zwraca wszystkie dostępne usługi Universal Analytics.

Ponieważ w Google Analytics 4 nie ma już pola websiteUrl na poziomie usługi, użyj pola properties.dataStreams/list, aby wyświetlić listę wszystkich strumieni danych powiązanych z usługą, i wyszukaj pole defaultUri, aby pobrać adres URL witryny powiązany ze strumieniem.

Zwróć uwagę na parametr filter w adresie URL żądania properties.list. Wartość tego parametru zawiera wyrażenie służące do filtrowania wyników żądania i może służyć do wyświetlania listy usług powiązanych z danym identyfikatorem konta Google Analytics lub z połączonym projektem Firebase.

Żądanie dotyczące interfejsu Admin API w wersji 1

GET https://analyticsadmin.googleapis.com/v1beta/properties?filter=parent:accounts/XXXXXX&key=[YOUR_API_KEY]

Odpowiedź interfejsu Admin API w wersji 1

{
  "properties": [
    {
      "name": "properties/XXXXXX",
      "parent": "accounts/XXXXXX",
      "createTime": "2020-10-29T04:02:49.124Z",
      "updateTime": "2020-10-29T04:02:49.124Z",
      "displayName": "Test Property",
      "timeZone": "America/Los_Angeles",
      "currencyCode": "USD"
    },
    ...
}

Żądanie do interfejsu Management API w wersji 3

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "kind": "analytics#webproperties",
  "username": "XXXXXX",
  "totalResults": 33,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "UA-XXXXXX-1",
      "kind": "analytics#webproperty",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1",
      "accountId": "XXXXXX",
      "internalWebPropertyId": "XXXXXX",
      "name": "Test Account",
      "websiteUrl": "XXXXXX",
      "level": "PREMIUM",
      "profileCount": 4,
      "industryVertical": "HEALTH",
      "defaultProfileId": "XXXXXX",
      "dataRetentionTtl": "INDEFINITE",
      "dataRetentionResetOnNewActivity": true,
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "READ_AND_ANALYZE"
        ]
      },
      "created": "2020-02-21T00:28:47.287Z",
      "updated": "2021-01-27T21:39:22.704Z",
      "parentLink": {
        "type": "analytics#account",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
      },
      "childLink": {
        "type": "analytics#profiles",
        "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/profiles"
      }
    },
    ...
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import ListPropertiesRequest


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    list_properties(account_id)


def list_properties(account_id: str, transport: str = None):
    """
    Lists Google Analytics 4 properties under the specified parent account
    that are available to the current user.

    Args:
        account_id(str): The Google Analytics account ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_properties(
        ListPropertiesRequest(filter=f"parent:accounts/{account_id}", show_deleted=True)
    )

    print("Result:")
    for property_ in results:
        print(property_)
        print()


Pobierz usługę

Metoda properties.get w interfejsie Admin API w wersji 1 zwraca informacje o usłudze w Google Analytics 4, podobnie jak metoda webproperties.get w interfejsie Management API w wersji 3.

Pamiętaj, że metoda properties.get interfejsu Admin API obsługuje tylko usługi Google Analytics 4.

Żądanie dotyczące interfejsu Admin API w wersji 1

GET https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?key=[YOUR_API_KEY]

Odpowiedź interfejsu Admin API w wersji 1

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-04-30T21:32:49.804Z",
  "updateTime": "2021-04-30T21:32:49.804Z",
  "displayName": "Test Property",
  "industryCategory": "FINANCE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Żądanie do interfejsu Management API w wersji 3

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3?key=[YOUR_API_KEY]

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "Test 2",
  "websiteUrl": "YOUR-WEBSITE-URL",
  "level": "STANDARD",
  "profileCount": 0,
  "industryVertical": "FINANCE",
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:41:39.219Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import IndustryCategory


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    get_property(property_id)


def get_property(property_id: str, transport: str = None):
    """
    Retrieves the Google Analytics 4 property details.

    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    property_ = client.get_property(name=f"properties/{property_id}")

    print("Result:")
    print_property(property_)


def print_property(property):
    """Prints the Google Analytics 4 property details."""
    print(f"Resource name: {property.name}")
    print(f"Parent: {property.parent}")
    print(f"Display name: {property.display_name}")
    print(f"Create time: {property.create_time}")
    print(f"Update time: {property.update_time}")
    # print(f"Delete time: {property.delete_time}")
    # print(f"Expire time: {property.expire_time}")

    if property.industry_category:
        print(f"Industry category: {IndustryCategory(property.industry_category).name}")

    print(f"Time zone: {property.time_zone}")
    print(f"Currency code: {property.currency_code}")


Utwórz usługę

Metoda properties.create interfejsu Admin API w wersji 1 tworzy nową usługę w Google Analytics 4, podobną do metody webproperties.insert interfejsu Management API w wersji 3.

Żądanie dotyczące interfejsu Admin API w wersji 1

POST https://analyticsadmin.googleapis.com/v1beta/properties?key=[YOUR_API_KEY]

{
  "displayName": "Test Property",
  "industryCategory": "AUTOMOTIVE",
  "currencyCode": "USD",
  "timeZone": "America/Los_Angeles",
  "parent": "accounts/XXXXXX"
}

Odpowiedź interfejsu Admin API w wersji 1

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-05-20T09:16:08.458Z",
  "updateTime": "2021-05-20T09:16:08.458Z",
  "displayName": "Test Property",
  "industryCategory": "AUTOMOTIVE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Żądanie do interfejsu Management API w wersji 3

POST https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]

{
  "name": "Test",
  "websiteUrl": "YOUR-WEBSITE-URL"
}

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "Test",
  "websiteUrl": "YOUR-WEBSITE-URL",
  "level": "STANDARD",
  "profileCount": 0,
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:35:51.985Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import Property


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    create_property(account_id)


def create_property(account_id: str, transport: str = None):
    """
    Creates a Google Analytics 4 property.

    Args:
        account_id(str): The Google Analytics Account ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    property_ = client.create_property(
        property=Property(
            parent=f"accounts/{account_id}",
            currency_code="USD",
            display_name="Test property",
            industry_category="OTHER",
            time_zone="America/Los_Angeles",
        )
    )

    print("Result:")
    print(property_)


Aktualizuj/popraw właściwość

Metoda properties.patch interfejsu Admin API w wersji 1 aktualizuje konfigurację usługi w Google Analytics 4, podobnie jak metoda webproperties.patch w interfejsie Management API w wersji 3.

Zwróć uwagę na parametr updateMask w adresie URL żądania, który zawiera rozdzieloną przecinkami listę pól do zaktualizowania. Pola, których nie ma na tej liście, nie zostaną zaktualizowane. Jeśli używasz biblioteki klienta, parametr update_mask będzie dostępny jako część podpisu metody.

Żądanie dotyczące interfejsu Admin API w wersji 1

PATCH https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?updateMask=displayName,industryCategory&key=[YOUR_API_KEY]

{
  "displayName": "New Property Name",
  "industryCategory": "FINANCE"
}

Odpowiedź interfejsu Admin API w wersji 1

{
  "name": "properties/XXXXXX",
  "parent": "accounts/XXXXXX",
  "createTime": "2021-04-30T21:32:49.804Z",
  "updateTime": "2021-05-20T09:25:14.810Z",
  "displayName": "New Property Name",
  "industryCategory": "FINANCE",
  "timeZone": "America/Los_Angeles",
  "currencyCode": "USD"
}

Żądanie do interfejsu Management API w wersji 3

PATCH https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3?key=[YOUR_API_KEY]

{
  "name": "New Property Name",
  "industryVertical": "FINANCE"
}

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "id": "UA-XXXXXX-3",
  "kind": "analytics#webproperty",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3",
  "accountId": "XXXXXX",
  "internalWebPropertyId": "XXXXXX",
  "name": "New Property Name",
  "websiteUrl": "XXXXXX",
  "level": "STANDARD",
  "profileCount": 0,
  "industryVertical": "FINANCE",
  "dataRetentionTtl": "MONTHS_26",
  "dataRetentionResetOnNewActivity": true,
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ]
  },
  "created": "2021-05-20T05:35:51.985Z",
  "updated": "2021-05-20T05:41:39.219Z",
  "parentLink": {
    "type": "analytics#account",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX"
  },
  "childLink": {
    "type": "analytics#profiles",
    "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3/profiles"
  }
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import Property
from google.protobuf.field_mask_pb2 import FieldMask


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics property ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    update_property(property_id)


def update_property(property_id: str, transport: str = None):
    """
    Updates the Google Analytics 4 property.

    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    # This call updates the display name, industry category and time zone of the
    # property, as indicated by the value of the `update_mask` field.
    # The property to update is specified in the `name` field of the `Property`
    # instance.
    property_ = client.update_property(
        property=Property(
            name=f"properties/{property_id}",
            display_name="This is an updated test property",
            industry_category="GAMES",
            time_zone="America/New_York",
        ),
        update_mask=FieldMask(paths=["display_name", "time_zone", "industry_category"]),
    )

    print("Result:")
    print(property_)


Zarządzanie kontami użytkowników

Interfejs Google Analytics Admin API implementuje obecnie model uprawnień użytkowników podobny do interfejsu Management API w wersji 3, ale jest kilka różnic.

  1. Uprawnieniami użytkowników możesz zarządzać za pomocą interfejsu Google Analytics Admin API za pomocą zasobów konta AccessBinding i usługi AccessBinding zamiast zasobów AccountUserLink, WebPropertyUserLink i ProfileUserLink dostępnych w interfejsie Management API w wersji 3.
  2. Powiązania dostępu do usługi w interfejsie Google Analytics Admin API nie obejmują dorozumianych uprawnień ani uprawnień odziedziczonych z powiązań dostępu do konta. W interfejsie Managementment API w wersji 3 każdy link użytkownika zawierał kolekcję permissions.effective obejmującą uprawnienia zarówno domniemane, jak i dziedziczone.

Element AccessBinding zawiera użytkownika (adres e-mail) i listę ról przypisanych mu. Encję AccessBinding można utworzyć, zaktualizować lub usunąć.

Mapowanie nazw ról interfejsu Admin API w wersji 1 a nazw uprawnień w interfejsie Management API w wersji 3 wygląda tak:

Rola w interfejsie Admin API w wersji 1 Nazwa uprawnienia w interfejsie Management API (wersja 3)
Wstępnie zdefiniowane role/wyświetlający READ_AND_ANALYZE
Wstępnie zdefiniowane role/analityk WSPÓŁPRACA
wstępnie zdefiniowane role/edytujący EDYTUJ
Wstępnie zdefiniowane role/administrator MANAGE_USERS

Role predefinedRoles/no-cost-data i predefinedRoles/no-revenue-data zostały wprowadzone w interfejsie Admin API w wersji 1 i nie mają odpowiadającego im mapowania w interfejsie Management API w wersji 3.

Z tego przewodnika dowiesz się, jak zarządzać powiązaniami dostępu na poziomie konta. Aby zarządzać powiązaniami dostępu na poziomie usługi, wykonaj te same czynności, ale używaj zasobów i metod usługi AccessBinding zamiast kontaAccessBinding.

Wyświetlenie listy powiązań dostępu do konta

Metoda accounts.accessBindings.list interfejsu Admin API w wersji 1 zawiera listę wszystkich powiązań dostępu na koncie, podobnie jak metoda accountUserLinks.list w interfejsie Management API w wersji 3.

Żądanie dotyczące interfejsu Admin API w wersji 1

GET https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX

Odpowiedź interfejsu Admin API w wersji 1

{
  "accessBindings": [
    {
      "name": "accounts/XXXXXX/accessBindings/XXXXXX",
      "user": "XXXXXX",
      "roles": [
        "predefinedRoles/editor",
        "predefinedRoles/admin"
      ]
    }
  ]
}

Żądanie do interfejsu Management API w wersji 3

GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks?key=[YOUR_API_KEY]

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "kind": "analytics#entityUserLinks",
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1000,
  "items": [
    {
      "id": "XXXXXX:XXXXXX",
      "kind": "analytics#entityUserLink",
      "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:XXXXXX",
      "entity": {
        "accountRef": {
          "id": "XXXXXX",
          "kind": "analytics#accountRef",
          "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
          "name": "This is a test account"
        }
      },
      "userRef": {
        "kind": "analytics#userRef",
        "id": "XXXXXX",
        "email": "XXXXXX"
      },
      "permissions": {
        "effective": [
          "COLLABORATE",
          "EDIT",
          "MANAGE_USERS",
          "READ_AND_ANALYZE"
        ],
        "local": [
          "EDIT",
          "MANAGE_USERS"
        ]
      }
    }
  ]
}

Przykładowy kod do wywoływania interfejsu Admin API przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"
    list_account_access_bindings(account_id)


def list_account_access_bindings(account_id: str, transport: str = None):
    """
    Lists access bindings under the specified parent account.

    Args:
        account_id(str): The id of the account.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    results = client.list_access_bindings(parent=f"accounts/{account_id}")

    print("Result:")
    for access_binding in results:
        print(access_binding)
        print()


Aktualizowanie powiązań dostępu do konta

Metoda accounts.accessBindings.patch w interfejsie Admin API w wersji 1 aktualizuje powiązanie dostępu do konta, podobnie jak metoda accountUserLinks.update w interfejsie Management API w wersji 3.

Żądanie dotyczące interfejsu Admin API w wersji 1

PATCH https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX

{
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Odpowiedź interfejsu Admin API w wersji 1

{
  "name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
  "user": "USER-EMAIL",
  "directRoles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Żądanie do interfejsu Management API w wersji 3

PUT https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX%3A104236685715552897132?key=[YOUR_API_KEY]

{
  "entity": {
    "accountRef": {
      "id": "XXXXXX"
    }
  },
  "userRef": {
    "email": "XXXXXX"
  },
  "permissions": {
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "id": "XXXXXX:104236685715552897132",
  "kind": "analytics#entityUserLink",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:104236685715552897132",
  "entity": {
    "accountRef": {
      "id": "XXXXXX",
      "kind": "analytics#accountRef",
      "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "This is a test account"
    }
  },
  "userRef": {
    "kind": "analytics#userRef",
    "id": "104236685715552897132",
    "email": "XXXXXX"
  },
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ],
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import AccessBinding


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics property ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with your Google Analytics
    #  account access binding ID (e.g. "123456") before running the sample.
    account_access_binding_id = "YOUR-ACCOUNT-ACCESS-BINDING-ID"

    update_account_access_binding(account_id, account_access_binding_id)


def update_account_access_binding(
    account_id: str, account_access_binding_id: str, transport: str = None
):
    """
    Updates the account access binding.

    Args:
        account_id(str): The Google Analytics Account ID.
        account_access_binding_id(str): Google Analytics account access binding ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    # This call updates the roles of the access binding. The access binding to
    # update is specified in the `name` field of the `AccessBinding` instance.
    access_binding = client.update_access_binding(
        access_binding=AccessBinding(
            name=f"accounts/{account_id}/accessBindings/{account_access_binding_id}",
            roles=["predefinedRoles/collaborate"],
        ),
    )

    print("Result:")
    print(access_binding)


Tworzenie powiązań dostępu do konta

Metoda accounts.accessBindings.create interfejsu Admin API w wersji 1 tworzy powiązanie dostępu na koncie, podobnie jak metoda accountUserLinks.insert w interfejsie Management API w wersji 3.

Żądanie dotyczące interfejsu Admin API w wersji 1

POST https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings

{
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ],
  "user": "USER-EMAIL"
}

Odpowiedź interfejsu Admin API w wersji 1

{
  "name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
  "user": "USER-EMAIL",
  "roles": [
    "predefinedRoles/editor",
    "predefinedRoles/admin"
  ]
}

Żądanie do interfejsu Management API w wersji 3

POST https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks?key=[YOUR_API_KEY]

{
  "entity": {
    "accountRef": {
      "id": "XXXXXX"
    }
  },
  "userRef": {
    "email": "XXXXXX"
  },
  "permissions": {
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Odpowiedź interfejsu API zarządzania w wersji 3

{
  "id": "XXXXXX:114236685715552897132",
  "kind": "analytics#entityUserLink",
  "selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks/XXXXXX:114236685715552897132",
  "entity": {
    "accountRef": {
      "id": "XXXXXX",
      "kind": "analytics#accountRef",
      "href": "https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX",
      "name": "This is a test account"
    }
  },
  "userRef": {
    "kind": "analytics#userRef",
    "id": "114236685715552897132",
    "email": "XXXXXX"
  },
  "permissions": {
    "effective": [
      "COLLABORATE",
      "EDIT",
      "MANAGE_USERS",
      "READ_AND_ANALYZE"
    ],
    "local": [
      "EDIT",
      "MANAGE_USERS"
    ]
  }
}

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessBinding,
    CreateAccessBindingRequest,
)


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with an email address of the user to
    #  link. This user will be given access to your account after running the
    #  sample.
    email_address = "TEST-EMAIL-ADDRESS"

    create_account_access_binding(account_id, email_address)


def create_account_access_binding(
    account_id: str, email_address: str, transport: str = None
):
    """
    Creates a access binding for the account.

    Args:
        account_id(str): The Google Analytics Account ID.
        email_address(str): Email address of the access binding user.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    access_binding = client.create_access_binding(
        CreateAccessBindingRequest(
            parent=f"accounts/{account_id}",
            access_binding=AccessBinding(
                user=email_address, roles=["predefinedRoles/read"]
            ),
        )
    )

    print("Result:")
    print(access_binding)


Grupowanie

Interfejs Admin API w wersji 1 nie obsługuje grupowania wielu wywołań interfejsu Google Analytics API przy użyciu typu treści mieszanej/wieloczęściowej, w przeciwieństwie do interfejsu API zarządzania w wersji 3.

Grupowanie jest obsługiwane bezpośrednio na poziomie interfejsu API. Te metody obsługi grupowania w interfejsie Admin API w wersji 1:

Przykładowy kod do wywoływania interfejsu Admin API w wersji 1 przy użyciu bibliotek klienta:

Python

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessBinding,
    BatchCreateAccessBindingsRequest,
    CreateAccessBindingRequest,
)


def run_sample():
    """Runs the sample."""

    # !!! ATTENTION !!!
    #  Running this sample may change/delete your Google Analytics account
    #  configuration. Make sure to not use the Google Analytics account ID from
    #  your production environment below.

    # TODO(developer): Replace this variable with your Google Analytics
    #  account ID (e.g. "123456") before running the sample.
    account_id = "YOUR-GA-ACCOUNT-ID"

    # TODO(developer): Replace this variable with an email address of the user to
    #  link. This user will be given access to your account after running the
    #  sample.
    email_address = "TEST-EMAIL-ADDRESS"

    batch_create_account_access_binding(account_id, email_address)


def batch_create_account_access_binding(
    account_id: str, email_address: str, transport: str = None
):
    """
    Creates a access binding for the account using a batch call.

    Args:
        account_id(str): The Google Analytics Account ID.
        email_address(str): Email address of the access binding user.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    response = client.batch_create_access_bindings(
        BatchCreateAccessBindingsRequest(
            parent=f"accounts/{account_id}",
            requests=[
                CreateAccessBindingRequest(
                    access_binding=AccessBinding(
                        user=email_address,
                        roles=["predefinedRoles/read"],
                    )
                )
            ],
        )
    )

    print("Result:")
    for access_binding in response.access_bindings:
        print(access_binding)
        print()


Zmiany limitów interfejsu API

Interfejs Admin API w wersji 1 wprowadza mniej restrykcyjne limity niż interfejs Management API w wersji 3.

  • Liczba żądań wysyłanych do interfejsu Admin API w wersji 1 jest domyślnie ograniczona do 600 żądań na minutę w projekcie GCP.
  • Obecnie nie ma dziennego limitu wywołań interfejsu Admin API w wersji 1 w każdym projekcie GCP. Pamiętaj, że teoretyczna maksymalna liczba żądań dziennie jest nadal ograniczona przez limit żądań na minutę.
  • Usunęliśmy oddzielny limit dziennej liczby operacji zapisu.