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 AdminUtiliser 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.
Java
Python
Node.js
.NET
PHP
Go
go get google.golang.org/genproto/googleapis/analytics/admin/v1alpha
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.
- 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 ressourcesAccountUserLink
,WebPropertyUserLink
etProfileUserLink
de l'API Management v3. - 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.