Migrer vers la version 1 de l'API Admin de Google Analytics

Les versions alpha et bêta de l'API sont toujours prises en charge. La version bêta contient un sous-ensemble des fonctionnalités disponibles dans la version alpha qui sont considérées comme stables et qui ne devraient pas subir de changement important à l'avenir. De nouvelles fonctionnalités seront ajoutées à la version bêta lorsqu'elles seront matures.

Ce document fournit des instructions sur la migration du code existant de l'API Google Analytics Management v3 vers l'API Google Analytics Admin v1 et présente brièvement les principales différences entre les deux API.

Pourquoi effectuer la migration ?

Si votre application doit créer ou configurer une propriété Google Analytics 4, elle doit utiliser l'API Admin v1. La version 3 de l'API Management ne fonctionne qu'avec les propriétés Universal Analytics, tandis que la version 1 de l'API Admin ne fonctionne qu'avec les propriétés Google Analytics 4.

Prérequis

Pour vous familiariser avec les bases de l'API Admin v1, consultez le guide de démarrage rapide.

Premiers pas

Pour commencer, vous allez préparer une propriété Google Analytics 4, activer la version 1 de l'API Admin, puis configurer une bibliothèque cliente d'API adaptée à votre plate-forme.

Préparer une propriété Google Analytics 4

Avant de migrer votre code pour qu'il soit compatible avec la version 1 de l'API Admin, vous devez migrer votre site Web pour utiliser une propriété Google Analytics 4.

Activer l'API

Cliquez sur ce bouton pour activer automatiquement l'API Admin v1 dans le projet Google Cloud sélectionné.

Activer l'API Google Analytics Admin

Utiliser une bibliothèque cliente

Installer une bibliothèque cliente

Si vous utilisez une bibliothèque cliente, vous devez installer la bibliothèque cliente de l'API Admin v1 pour votre langage de programmation.

Initialiser une bibliothèque cliente

Les bibliothèques clientes de la version 1 de l'API Admin ont été conçues pour vous aider à démarrer rapidement. Par défaut, les bibliothèques clientes tentent de trouver automatiquement les identifiants de votre compte de service.

Pour fournir facilement les identifiants du compte de service, définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS. Le client API utilisera la valeur de cette variable pour trouver le fichier JSON de la clé du compte de service.

Par exemple, vous pouvez définir les identifiants du compte de service en exécutant la commande suivante et en indiquant le chemin d'accès au fichier JSON du compte de service:

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Vous trouverez ci-dessous les extraits de code couramment utilisés pour initialiser les bibliothèques clientes de l'API Admin v1.

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();

Au lieu d'utiliser une variable d'environnement, il est également possible de transmettre explicitement les identifiants à une instance de client API lors de l'initialisation.

Si vous n'utilisez pas de bibliothèque cliente

Si vous utilisez l'API Management v3 sans bibliothèque cliente et que vous souhaitez continuer à le faire avec l'API Admin v1, vous pouvez quand même utiliser vos identifiants.

Vous devez utiliser le nouveau point de terminaison HTTP et le nouveau document de découverte fournis par l'API Admin:

Si votre code tire parti d'un document de découverte, vous devez le mettre à jour vers le document de découverte fourni par l'API Admin v1:

Après avoir mis à jour le point de terminaison, vous devez vous familiariser avec la nouvelle structure de requête et les nouveaux concepts de l'API Admin afin de mettre à jour votre requête JSON.

Tâches courantes

Gérer les comptes

L'API Admin version 1 fournit un ensemble de méthodes de gestion des comptes et des propriétés Google Analytics comparables à la version 3 de l'API Management. De plus, la version 1 de l'API Admin permet de provisionner, de supprimer et de mettre à jour des comptes Google Analytics.

  • Seules les propriétés Google Analytics 4 sont compatibles avec les méthodes de gestion des propriétés de la version 1 de l'API Admin.

  • La notion de vues (profils) n'existe pas dans la version 1 de l'API Admin.

  • Comme les flux de données ont été introduits dans Google Analytics 4, certaines informations ne sont plus présentes au niveau de la propriété. Par exemple, le champ websiteUrl est désormais présent dans l'entité DataStream au lieu de faire partie de l'objet de propriété.

Obtenir la liste des récapitulatifs de compte

La méthode accountSummaries de l'API Admin renvoie des résumés légers de tous les comptes accessibles par l'appelant, de la même manière que la méthode accountSummaries de l'API Management v3.

Il est important de noter que la version 1 de l'API Admin ne renvoie que des informations sur les propriétés Google Analytics 4, tandis que les réponses de l'API Management v3 contiennent des données sur les propriétés créées avec Universal Analytics. Il n'est pas possible de récupérer des informations sur ces deux types de propriétés à l'aide d'un seul appel.

Étant donné qu'il n'y a pas de vues (profils) dans Google Analytics 4, les récapitulatifs de compte renvoyés par l'API Admin ne contiennent pas d'informations sur les vues (profils).

Les données récapitulatives du compte Google Analytics 4 sont limitées aux noms de ressources et à afficher des comptes/propriétés disponibles pour l'utilisateur actuel.

Utilisez les noms de ressources renvoyés dans les champs account et property de la réponse des résumés pour récupérer l'intégralité des données de configuration en appelant les méthodes account.get et property.get.

Requête pour l'API Admin v1

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

Réponse de l'API Admin v1

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

Requête à l'API Management v3

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

Réponse de l'API Management v3

{
  "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"
            }
          ]
        },
        ...
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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()


Répertorier les comptes

La méthode accounts.list de la version 1 de l'API Admin renvoie tous les comptes accessibles par l'appelant, de manière semblable à la méthode accounts.list de l'API Management v3.

Requête pour l'API Admin v1

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

Réponse de l'API Admin v1

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

Requête à l'API Management v3

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

Réponse de l'API Management v3

{
  "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"
      }
    },
    ...
}

Notez que la réponse de l'API Admin v1 n'inclut pas d'informations sur les autorisations d'utilisateur effectives, ni sur le champ childLink présent dans la version 3 de l'API Management.

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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)


Gérer les propriétés

Lister les propriétés

La méthode properties.list de la version 1 de l'API Admin renvoie toutes les propriétés Google Analytics 4 accessibles par l'appelant, de la même manière que la méthode webproperties.list de l'API Management v3 renvoie toutes les propriétés Universal Analytics accessibles.

Étant donné que le champ websiteUrl n'est plus présent au niveau de la propriété dans Google Analytics 4, utilisez properties.dataStreams/list pour répertorier tous les flux de données associés à la propriété et recherchez le champ defaultUri pour récupérer l'URL du site Web associé à un flux.

Notez le paramètre filter dans l'URL de la requête properties.list. La valeur du paramètre contient une expression permettant de filtrer les résultats de la requête. Elle peut être utilisée pour lister les propriétés associées à l'ID de compte Google Analytics donné ou au projet Firebase associé.

Requête pour l'API Admin v1

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

Réponse de l'API Admin v1

{
  "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"
    },
    ...
}

Requête à l'API Management v3

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

Réponse de l'API Management v3

{
  "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"
      }
    },
    ...
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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()


Obtenir la propriété

La méthode properties.get de la version 1 de l'API Admin renvoie les informations sur une propriété Google Analytics 4, de la même manière que la méthode webproperties.get de l'API Management v3.

Notez que la méthode properties.get de l'API Admin n'est compatible qu'avec les propriétés Google Analytics 4.

Requête pour l'API Admin v1

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

Réponse de l'API Admin v1

{
  "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"
}

Requête à l'API Management v3

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

Réponse de l'API Management v3

{
  "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"
  }
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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}")


Créer une propriété

La méthode properties.create de la version 1 de l'API Admin crée une propriété Google Analytics 4, semblable à la méthode webproperties.insert de l'API Management v3.

Requête pour l'API Admin v1

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"
}

Réponse de l'API Admin v1

{
  "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"
}

Requête à l'API Management v3

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

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

Réponse de l'API Management v3

{
  "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"
  }
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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_)


Mettre à jour/corriger la propriété

La méthode properties.patch de la version 1 de l'API Admin met à jour la configuration d'une propriété Google Analytics 4, de la même manière que la méthode webproperties.patch de l'API Management v3.

Notez le paramètre updateMask dans l'URL de la requête, qui contient la liste des champs à mettre à jour, séparés par une virgule. Les champs absents de cette liste ne seront pas mis à jour. Si vous utilisez une bibliothèque cliente, le paramètre update_mask sera disponible dans la signature de la méthode.

Requête pour l'API Admin v1

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

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

Réponse de l'API Admin v1

{
  "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"
}

Requête à l'API Management v3

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

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

Réponse de l'API Management v3

{
  "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"
  }
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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_)


Gérer les utilisateurs

L'API Admin de Google Analytics implémente actuellement un modèle d'autorisations utilisateur semblable à l'API Management v3, à quelques différences près.

  1. Vous pouvez gérer les autorisations des utilisateurs avec l'API Admin de Google Analytics à l'aide des ressources du compte AccessBinding et de la propriété AccessBinding au lieu des ressources AccountUserLink, WebPropertyUserLink et ProfileUserLink de l'API Management v3.
  2. Dans l'API Admin de Google Analytics, les liaisons d'accès aux propriétés n'incluent pas les autorisations implicites ou héritées des liaisons d'accès au compte. Dans l'API Management v3, chaque lien utilisateur contenait une collection permissions.effective incluant des autorisations implicites et héritées.

Une entité AccessBinding contient un utilisateur (adresse e-mail) et la liste des rôles qui lui sont attribués. Une entité AccessBinding peut être créée, mise à jour ou supprimée.

Le mappage entre les noms de rôle de l'API Admin v1 et les noms d'autorisation de l'API Management v3 est le suivant:

Rôle de la version 1 de l'API Admin Nom de l'autorisation pour l'API Management v3
prédéfinisRoles/lecteur READ_AND_ANALYZE
Rôles prédéfinis/analyste COLLABORER
Rôles prédéfinis/Éditeur MODIFIER
prédéfinisRoles/admin MANAGE_USERS

Les rôles predefinedRoles/no-cost-data et predefinedRoles/no-revenue-data ont été introduits dans la version 1 de l'API Admin et n'ont pas de mappage correspondant dans la version 3 de l'API Management.

Ce guide explique comment gérer les liaisons d'accès au niveau du compte. Pour gérer les liaisons d'accès au niveau de la propriété, suivez le même processus, mais utilisez les ressources et les méthodes de la propriété AccessBinding au lieu de compte AccessBinding.

Répertorier les liaisons d'accès au compte

La méthode accounts.accessBindings.list de la version 1 de l'API Admin répertorie toutes les liaisons d'accès associées à un compte, de la même manière que la méthode accountUserLinks.list de l'API Management v3.

Requête pour l'API Admin v1

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

Réponse de l'API Admin v1

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

Requête à l'API Management v3

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

Réponse de l'API Management v3

{
  "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"
        ]
      }
    }
  ]
}

Exemple de code pour appeler l'API Admin à l'aide de bibliothèques clientes:

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()


Mettre à jour les liaisons d'accès au compte

La méthode accounts.accessBindings.patch de l'API Admin v1 met à jour une liaison d'accès d'un compte, de la même manière que la méthode accountUserLinks.update de l'API Management v3.

Requête pour l'API Admin v1

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

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

Réponse de l'API Admin v1

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

Requête à l'API Management v3

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"
    ]
  }
}

Réponse de l'API Management v3

{
  "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"
    ]
  }
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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)


Créer des liaisons d'accès au compte

La méthode accounts.accessBindings.create de l'API Admin v1 crée une liaison d'accès dans un compte, semblable à la méthode accountUserLinks.insert de l'API Management v3.

Requête pour l'API Admin v1

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

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

Réponse de l'API Admin v1

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

Requête à l'API Management v3

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"
    ]
  }
}

Réponse de l'API Management v3

{
  "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"
    ]
  }
}

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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)


Traitement par lot

La version 1 de l'API Admin ne permet pas de regrouper plusieurs appels d'API Google Analytics par lot à l'aide du type de contenu multipart/mixte, contrairement à l'API Management v3.

À la place, le traitement par lot est explicitement pris en charge au niveau de l'API. Les méthodes suivantes de la version 1 de l'API Admin sont compatibles avec la fonctionnalité de traitement par lot:

Exemple de code pour appeler l'API Admin v1 à l'aide de bibliothèques clientes:

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()


Modifications des quotas d'API

L'API Admin version 1 introduit des quotas moins restrictifs que l'API Management v3.

  • Par défaut, le nombre de requêtes adressées à l'API Admin v1 est limité à 600 requêtes par minute pour un projet GCP.
  • Actuellement, il n'y a pas de limite quotidienne sur le nombre d'appels de l'API Admin v1 par projet GCP. Notez que le nombre maximal théorique de requêtes par jour reste limité par le quota de requêtes par minute.
  • Une limite distincte du nombre d'opérations d'écriture par jour a été supprimée.