Los canales Alfa y Beta de la API continúan siendo compatibles. El canal beta contiene un subconjunto de las funciones disponibles en la versión alfa que se consideran estables y no se espera que experimenten un cambio significativo en el futuro. Las nuevas funciones se agregarán a la versión beta cuando se desarrollen.
En este documento, se proporcionan instrucciones para migrar el código existente de la API de Google Analytics Management v3 a la API de Google Analytics Admin v1 y se proporciona una breve descripción general de las diferencias clave entre las dos APIs.
¿Por qué debo realizar la migración?
Si tu aplicación necesita crear o configurar una propiedad Google Analytics 4, debe usar la API de Admin v1. La API de Management v3 solo funciona con las propiedades Universal Analytics, y la API de Admin v1 solo funciona con las propiedades Google Analytics 4.
Requisitos previos
Para familiarizarte con los conceptos básicos de la versión 1 de la API de Admin, lee la guía de inicio rápido.
Comenzar
Para comenzar, prepararás una propiedad Google Analytics 4, habilitarás la versión 1 de la API de Admin y, luego, configurarás una biblioteca cliente de API adecuada para tu plataforma.
Prepara una propiedad Google Analytics 4
Antes de migrar tu código para que sea compatible con la API de Admin v1, debes migrar tu sitio web para usar una propiedad Google Analytics 4.
Habilita la API
Haz clic en este botón para habilitar automáticamente la API de Admin v1 en el proyecto de Google Cloud seleccionado.
Habilitar la API de Google Analytics AdminUsa una biblioteca cliente
Instalar una biblioteca cliente
Si usas una biblioteca cliente, debes instalar la biblioteca cliente v1 de la API de Admin para tu lenguaje de programación.
Java
Python
Node.js
.NET
PHP
Go
go get google.golang.org/genproto/googleapis/analytics/admin/v1alpha
Cómo inicializar una biblioteca cliente
Las bibliotecas cliente de la versión 1 de la API de Admin se diseñaron para que comiences con rapidez. Según la configuración predeterminada, las bibliotecas cliente intentan encontrar automáticamente las credenciales de tu cuenta de servicio.
Una manera fácil de proporcionar credenciales de cuenta de servicio es mediante la configuración de la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
. El cliente de la API usará el valor de esta variable para buscar el archivo JSON de la clave de la cuenta de servicio.
Por ejemplo, para configurar las credenciales de la cuenta de servicio, ejecuta el siguiente comando y usa la ruta de acceso al archivo JSON de la cuenta de servicio:
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
A continuación, se muestran los fragmentos de código que se usan comúnmente para inicializar las bibliotecas cliente de la versión 1 de la API de Admin.
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();
En lugar de usar una variable de entorno, también es posible pasar la información de credenciales a una instancia de cliente de API de forma explícita durante la inicialización.
Si no usas una biblioteca cliente
Si usas la API de Management v3 sin una biblioteca cliente y deseas continuar haciéndolo con la API de Admin v1, puedes usar tus credenciales.
Debes usar el nuevo documento de extremo HTTP y descubrimiento que proporciona la API de Admin:
Si tu código aprovecha un documento de descubrimiento, debes actualizarlo al documento de descubrimiento que proporciona la API de Admin v1:
Después de actualizar el extremo, deberás familiarizarte con la nueva estructura de solicitud y los conceptos de la API de Admin para actualizar tu consulta JSON.
Tareas comunes
Administrar cuentas
La API de Admin v1 proporciona un conjunto de métodos de administración de cuentas y propiedades de Google Analytics similares a la API de Management v3. Además, la API de Admin v1 presenta funciones para aprovisionar, borrar y actualizar las cuentas de Google Analytics.
Solo las propiedades Google Analytics 4 son compatibles con los métodos de administración de propiedades v1 de la API de Admin.
La noción de vistas (perfiles) no está presente en la versión 1 de la API de Admin.
Debido a que los flujos de datos se agregaron en Google Analytics 4, cierta información ya no está presente a nivel de la propiedad. Por ejemplo, el campo
websiteUrl
ahora está presente en la entidadDataStream
en lugar de ser una parte del objeto de propiedad.
Enumerar resúmenes de la cuenta
El método accountSummaries
de la API de Admin muestra resúmenes breves de todas las cuentas a las que puede acceder el llamador, de manera similar al método accountSummaries
de la API de Management v3.
Una distinción importante es que la API de Admin v1 solo muestra información sobre las propiedades Google Analytics 4, mientras que las respuestas de la API de Management v3 contienen datos sobre las propiedades creadas con Universal Analytics. No es posible recuperar información sobre ambos tipos de propiedades con una sola llamada.
Debido a que no hay vistas (perfiles) en Google Analytics 4, los resúmenes de la cuenta que muestra la API de Admin no contienen información de vistas (perfil).
Los datos de resumen de la cuenta de Google Analytics 4 se limitan a los recursos y los nombres visibles de las cuentas o propiedades disponibles para el usuario actual.
Usa los nombres de recursos que se muestran en los campos account
y property
de la respuesta de los resúmenes para recuperar los datos de configuración completos mediante una llamada a los métodos account.get
y property.get
.
Solicitud de la versión 1 de la API de Admin
GET https://analyticsadmin.googleapis.com/v1beta/accountSummaries?key=[YOUR_API_KEY]
Respuesta de la API de Admin v1
{
"accountSummaries": [
{
"name": "accountSummaries/XXXXXX",
"account": "accounts/XXXXXX",
"displayName": "Test",
"propertySummaries": [
{
"property": "properties/XXXXXX",
"displayName": "Test App"
}
]
},
...
}
Solicitud a la API de Management v3
GET https://analytics.googleapis.com/analytics/v3/management/accountSummaries?key=[YOUR_API_KEY]
Respuesta de la API de 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"
}
]
},
...
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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()
Mostrar cuentas
El método accounts.list
de la versión 1 de la API de Admin
muestra todas las cuentas a las que puede acceder el llamador, de manera similar al método accounts.list
de la API de Management v3.
Solicitud de la versión 1 de la API de Admin
GET https://analyticsadmin.googleapis.com/v1beta/accounts?key=[YOUR_API_KEY]
Respuesta de la API de 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"
},
...
}
Solicitud a la API de Management v3
GET https://analytics.googleapis.com/analytics/v3/management/accounts?key=[YOUR_API_KEY]
Respuesta de la API de 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"
}
},
...
}
Ten en cuenta que la respuesta v1 de la API de Admin no incluye información sobre los permisos efectivos del usuario ni el campo childLink
que estaba presente en la API de Management v3.
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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)
Administrar propiedades
Enumerar propiedades
El método properties.list
de la versión 1 de la API de Admin
muestra todas las propiedades Google Analytics 4 a las que puede acceder el llamador, de manera similar al método webproperties.list
de la API de Management v3,
que devuelve todas las propiedades Universal Analytics accesibles.
Dado que el campo websiteUrl
ya no está presente a nivel de la propiedad en
Google Analytics 4, usa
properties.dataStreams/list
para enumerar todos los flujos de datos asociados con la propiedad y busca el campo
defaultUri
para recuperar la URL del sitio web asociada con un flujo.
Ten en cuenta el parámetro filter
en la URL de la solicitud properties.list
. El
valor del parámetro contiene una expresión para filtrar los resultados de la
solicitud y se puede usar para enumerar las propiedades asociadas con un ID de cuenta de Google Analytics determinado o con el proyecto de Firebase vinculado.
Solicitud de la versión 1 de la API de Admin
GET https://analyticsadmin.googleapis.com/v1beta/properties?filter=parent:accounts/XXXXXX&key=[YOUR_API_KEY]
Respuesta de la API de 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"
},
...
}
Solicitud a la API de Management v3
GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]
Respuesta de la API de 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"
}
},
...
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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()
Obtener propiedad
El método properties.get
de la API de Admin v1
muestra la información sobre una propiedad Google Analytics 4, similar al método webproperties.get
de la API de Management v3.
Ten en cuenta que el método properties.get
de la API de Admin solo admite propiedades
Google Analytics 4.
Solicitud de la versión 1 de la API de Admin
GET https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?key=[YOUR_API_KEY]
Respuesta de la API de 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"
}
Solicitud a la API de Management v3
GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-3?key=[YOUR_API_KEY]
Respuesta de la API de 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"
}
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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}")
Crear propiedad
El método properties.create
de la API de Admin v1
crea una nueva propiedad Google Analytics 4, similar al
método webproperties.insert
de la API de Management v3.
Solicitud de la versión 1 de la API de Admin
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"
}
Respuesta de la API de 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"
}
Solicitud a la API de Management v3
POST https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties?key=[YOUR_API_KEY]
{
"name": "Test",
"websiteUrl": "YOUR-WEBSITE-URL"
}
Respuesta de la API de 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"
}
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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_)
Actualizar o aplicar parches a una propiedad
El método properties.patch
de la versión 1 de la API de Admin
actualiza la configuración de una propiedad Google Analytics 4, de manera similar al
método webproperties.patch
de la API de Management v3.
Ten en cuenta el parámetro updateMask
en la URL de la solicitud, que contiene la lista de campos separados por comas que se actualizarán. No se actualizarán los campos que no estén presentes en esta lista. Si usas una biblioteca cliente, el parámetro update_mask
estará disponible como parte de la firma del método.
Solicitud de la versión 1 de la API de Admin
PATCH https://analyticsadmin.googleapis.com/v1beta/properties/XXXXXX?updateMask=displayName,industryCategory&key=[YOUR_API_KEY]
{
"displayName": "New Property Name",
"industryCategory": "FINANCE"
}
Respuesta de la API de 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"
}
Solicitud a la API de 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"
}
Respuesta de la API de 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"
}
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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_)
Administración de usuarios
En la actualidad, la API de Administrador de Google Analytics implementa un modelo de permisos del usuario similar a la API de Management v3, pero con algunas diferencias.
- Puedes administrar los permisos del usuario con la API de Google Analytics Admin
mediante los recursos de
cuenta
AccessBinding
y propiedadAccessBinding
, en lugar de los recursosAccountUserLink
,WebPropertyUserLink
yProfileUserLink
en la versión 3 de la API de Management. - Las vinculaciones de acceso a la propiedad en la API de Google Analytics Admin no incluyen permisos implícitos ni permisos heredados de las vinculaciones de acceso a la cuenta. En la
API de Management v3, cada vínculo de usuario contenía una colección
permissions.effective
que incluía permisos implícitos y heredados.
Una entidad AccessBinding
contiene un usuario (dirección de correo electrónico) y una lista de funciones otorgadas al usuario. Se puede crear, actualizar o borrar una entidad AccessBinding
.
La asignación entre los nombres de las funciones v1 de la API de Admin y los nombres de permisos de la API de Management v3 es la siguiente:
Rol de API de Admin v1 | Nombre del permiso de la API de Management v3 |
---|---|
predefinidoRoles/viewer | READ_AND_ANALYZE |
roles predefinidos/analista | COLABORACIÓN |
predefinidoRoles/editor | EDITAR |
predefinidosRoles/administrador | MANAGE_USERS |
Las funciones predefinedRoles/no-cost-data
y predefinedRoles/no-revenue-data
se introdujeron en la API de Admin v1 y no tienen una asignación correspondiente en la API de Management v3.
En esta guía, se muestra cómo administrar las vinculaciones de acceso a nivel de la cuenta. Para administrar las vinculaciones de acceso a nivel de la propiedad, sigue el mismo proceso, pero usa los recursos y métodos de la propiedad AccessBinding
en lugar de la cuenta AccessBinding
.
Enumerar vinculaciones de acceso a cuentas
El método accounts.accessBindings.list
de la versión 1 de la API de Admin enumera todas las vinculaciones de acceso en una cuenta, de manera similar al método accountUserLinks.list
de la API de Management v3.
Solicitud de la versión 1 de la API de Admin
GET https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX
Respuesta de la API de Admin v1
{
"accessBindings": [
{
"name": "accounts/XXXXXX/accessBindings/XXXXXX",
"user": "XXXXXX",
"roles": [
"predefinedRoles/editor",
"predefinedRoles/admin"
]
}
]
}
Solicitud a la API de Management v3
GET https://analytics.googleapis.com/analytics/v3/management/accounts/XXXXXX/entityUserLinks?key=[YOUR_API_KEY]
Respuesta de la API de 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"
]
}
}
]
}
Código de muestra para llamar a la API de Admin con bibliotecas cliente:
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()
Actualizar vinculaciones de acceso a cuentas
El método accounts.accessBindings.patch
de la API de Admin v1 actualiza una vinculación de acceso de una cuenta, de manera similar al método accountUserLinks.update
de la API de Management v3.
Solicitud de la versión 1 de la API de Admin
PATCH https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings/XXXXXXXX
{
"roles": [
"predefinedRoles/editor",
"predefinedRoles/admin"
]
}
Respuesta de la API de Admin v1
{
"name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
"user": "USER-EMAIL",
"directRoles": [
"predefinedRoles/editor",
"predefinedRoles/admin"
]
}
Solicitud a la API de 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"
]
}
}
Respuesta de la API de 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"
]
}
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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)
Cómo crear vinculaciones de acceso a cuentas
El método accounts.accessBindings.create
de la API de Admin v1 crea una vinculación de acceso en una cuenta, similar al método accountUserLinks.insert
de la API de Management v3.
Solicitud de la versión 1 de la API de Admin
POST https://analyticsadmin.googleapis.com/v1alpha/accounts/XXXXXX/accessBindings
{
"roles": [
"predefinedRoles/editor",
"predefinedRoles/admin"
],
"user": "USER-EMAIL"
}
Respuesta de la API de Admin v1
{
"name": "accounts/XXXXXX/accessBindings/XXXXXXXX",
"user": "USER-EMAIL",
"roles": [
"predefinedRoles/editor",
"predefinedRoles/admin"
]
}
Solicitud a la API de 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"
]
}
}
Respuesta de la API de 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"
]
}
}
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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)
Agrupación en lotes
La API de Admin v1 no admite el procesamiento por lotes de varias llamadas a la API de Google Analytics con el tipo de contenido multiparte o mixto, a diferencia de la API de Management v3.
En cambio, el procesamiento por lotes se admite explícitamente en el nivel de la API. Los siguientes métodos de la API de Admin v1 admiten la funcionalidad de lotes:
Código de muestra para llamar a la API de Admin v1 con bibliotecas cliente:
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()
Cambios en la cuota de la API
La API de Admin v1 presenta cuotas menos restrictivas en comparación con la API de Management v3.
- Según la configuración predeterminada, la cantidad de solicitudes a la API de Administrador v1 está limitada a 600 solicitudes por minuto para un proyecto de GCP.
- En la actualidad, no hay una cuota límite diaria para la cantidad de llamadas a la API de Admin v1 por proyecto de GCP. Ten en cuenta que la cantidad máxima teórica de solicitudes por día sigue limitada por la cuota de solicitudes por minuto.
- Se quitó un límite independiente para la cantidad de operaciones de escritura por día.