La API de Google Analytics proporciona acceso a datos de informes de Google Analytics (GA), como páginas vistas, sesiones, fuente de tráfico y tasa de rebote.

La documentación oficial de Google explica que se puede utilizar para:

  • Cree paneles personalizados para mostrar datos de GA.
  • Automatice tareas complejas de generación de informes.
  • Integrar con otras aplicaciones.

Puede acceder a la respuesta de la API utilizando varios métodos diferentes, incluidos Java, PHP y JavaScript, pero este artículo, en particular, se centrará en el acceso y la exportación de datos mediante Python.

Este artículo solo cubrirá algunos de los métodos que se pueden usar para acceder a diferentes subconjuntos de datos usando diferentes métricas y dimensiones.

Espero escribir una guía de seguimiento que explore diferentes formas de analizar, visualizar y combinar los datos.

Configuración de la API

Creación de una cuenta de servicio de Google

El primer paso es crear un proyecto o seleccionar uno dentro de su cuenta de servicio de Google.

Una vez creado, el siguiente paso es seleccionar el + Crear cuenta de servicio botón.

Cuenta de servicio de GoogleCaptura de pantalla de Google Cloud, diciembre de 2022

Luego se le promoverá para que agregue algunos detalles, como un nombre, una identificación y una descripción.

Detalles de la cuenta de servicioCaptura de pantalla de Google Cloud, diciembre de 2022

Una vez que se haya creado la cuenta de servicio, vaya a la LLAVES sección y agregue una nueva clave.

Clave de cuenta de servicioCaptura de pantalla de Google Cloud, diciembre de 2022

Esto le pedirá que cree y descargue una clave privada. En este caso, seleccione JSON y luego cree y espere a que se descargue el archivo.

Clave de credenciales JSONCaptura de pantalla de Google Cloud, diciembre de 2022

Agregar a la cuenta de Google Analytics

También querrá tomar una copia del correo electrónico que se ha generado para la cuenta de servicio; esto se puede encontrar en la página principal de la cuenta.

Correo electrónico de la cuenta de GoogleCaptura de pantalla de Google Cloud, diciembre de 2022

El siguiente paso es agregar ese correo electrónico como usuario en Google Analytics con permisos de analista.

Correo electrónico en Google AnalyticsCaptura de pantalla de Google Analytics, diciembre de 2022

Habilitación de la API

El paso final y posiblemente el más importante es asegurarse de haber habilitado el acceso a la API. Para hacer esto, asegúrese de estar en el proyecto correcto y siga este enlace para habilitar el acceso.

Luego, siga los pasos para habilitarlo cuando se promocione.

Habilitación de la APICaptura de pantalla de Google Cloud, diciembre de 2022

Esto es necesario para acceder a la API. Si omite este paso, se le pedirá que lo complete cuando ejecute el script por primera vez.

Accediendo a la API de Google Analytics con Python

Ahora que todo está configurado en nuestra cuenta de servicio, podemos comenzar a escribir el script para exportar los datos.

Elegí Jupyter Notebooks para crear esto, pero también puede usar otros entornos de desarrollo integrados (IDE), incluidos PyCharm o VSCode.

Instalación de bibliotecas

El primer paso es instalar las bibliotecas que se necesitan para ejecutar el resto del código.

Algunos son exclusivos de la API de análisis y otros son útiles para futuras secciones del código.

!pip install --upgrade google-api-python-client
!pip3 install --upgrade oauth2client
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
!pip install connect
!pip install functions
import connect

Nota: Cuando use pip en un cuaderno Jupyter, agregue el ! – si se ejecuta en la línea de comandos o en otro IDE, el ! no es necesario

Creación de una compilación de servicio

El siguiente paso es configurar nuestro alcance, que es el enlace de autenticación de la API de análisis de solo lectura.

A esto le sigue la descarga JSON de los secretos del cliente que se generó al crear la clave privada. Esto se usa de manera similar a una clave API.

Para acceder fácilmente a este archivo dentro de su código, asegúrese de haber guardado el archivo JSON en la misma carpeta que el archivo de código. Esto se puede llamar fácilmente con la función KEY_FILE_LOCATION.

Finalmente, agregue la ID de vista de la cuenta de análisis con la que le gustaría acceder a los datos.

ID de vista de Google AnalyticsCaptura de pantalla del autor, diciembre de 2022

En conjunto, esto se verá como lo siguiente. Haremos referencia a estas funciones a lo largo de nuestro código.

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'client_secrets.json'
VIEW_ID = 'XXXXX'

Una vez que hayamos agregado nuestro archivo de clave privada, podemos agregarlo a la función de credenciales llamando al archivo y configurándolo a través del paso ServiceAccountCredentials.

Luego, configure el informe de compilación, llame a la API de informes de análisis V4 y nuestras credenciales ya definidas desde arriba.

credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)
service = build('analyticsreporting', 'v4', credentials=credentials)

Escribir el cuerpo de la solicitud

Una vez que tenemos todo configurado y definido, comienza la verdadera diversión.

Desde la compilación del servicio API, existe la posibilidad de seleccionar los elementos de la respuesta a los que queremos acceder. Esto se llama un objeto ReportRequest y requiere lo siguiente como mínimo:

  • Un ID de vista válido para el campo viewId.
  • Al menos una entrada válida en el campo dateRanges.
  • Al menos una entrada válida en el campo de métricas.

Ver identificación

Como se mencionó, hay algunas cosas que se necesitan durante esta etapa de compilación, comenzando con nuestro viewId. Como ya hemos definido anteriormente, solo necesitamos llamar a ese nombre de función (VIEW_ID) en lugar de agregar nuevamente la ID de vista completa.

Si quisiera recopilar datos de una vista de análisis diferente en el futuro, solo necesitaría cambiar la ID en el bloque de código inicial en lugar de ambos.

Rango de fechas

Luego, podemos agregar el rango de fechas para las fechas para las que queremos recopilar los datos. Este consta de una fecha de inicio y una fecha de finalización.

Hay un par de formas de escribir esto dentro de la solicitud de compilación.

Puede seleccionar fechas definidas, por ejemplo, entre dos fechas, agregando la fecha en un formato de año-mes-fecha, ‘startDate’: ‘2022-10-27’, ‘endDate’: ‘2022-11-27’.

O bien, si desea ver los datos de los últimos 30 días, puede establecer la fecha de inicio como “hace 30 días” y la fecha de finalización como “hoy”.

Métricas y dimensiones

El paso final de la llamada de respuesta básica es establecer las métricas y dimensiones. Las métricas son las medidas cuantitativas de Google Analytics, como el recuento de sesiones, la duración de la sesión y la tasa de rebote.

Las dimensiones son las características de los usuarios, sus sesiones y sus acciones. Por ejemplo, la ruta de la página, la fuente de tráfico y las palabras clave utilizadas.

Hay muchas métricas y dimensiones diferentes a las que se puede acceder. No los revisaré todos en este artículo, pero todos se pueden encontrar junto con información adicional y atributos aquí.

Cualquier cosa a la que pueda acceder en Google Analytics puede acceder en la API. Esto incluye las conversiones de objetivos, los inicios y los valores, el navegador utilizado para acceder al sitio web, la página de destino, el seguimiento de la ruta de la segunda página y la búsqueda interna, la velocidad del sitio y las métricas de audiencia.

Tanto las métricas como las dimensiones se agregan en un formato de diccionario, utilizando pares clave:valor. Para las métricas, la clave será ‘expresión’ seguida de los dos puntos (:) y luego el valor de nuestra métrica, que tendrá un formato específico.

Por ejemplo, si quisiéramos obtener un recuento de todas las sesiones, agregaríamos ‘expression’: ‘ga:sessions’. O ‘expression’: ‘ga:newUsers’ si quisiéramos ver un recuento de todos los usuarios nuevos.

Con las dimensiones, la clave será ‘nombre’ seguida de los dos puntos nuevamente y el valor de la dimensión. Por ejemplo, si quisiéramos extraer las diferentes rutas de la página, sería ‘name’: ‘ga:pagePath’.

O ‘name’: ‘ga:medium’ para ver las diferentes referencias de fuentes de tráfico al sitio.

Combinación de dimensiones y métricas

El valor real está en combinar métricas y dimensiones para extraer los conocimientos clave que más nos interesan.

Por ejemplo, para ver un recuento de todas las sesiones que se han creado a partir de diferentes fuentes de tráfico, podemos configurar nuestra métrica para que sea ga:sessions y nuestra dimensión para que sea ga:medium.

response = service.reports().batchGet(
    body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': 'ga:medium'}]
        }]
      }
  ).execute()

Creación de un marco de datos

La respuesta que obtenemos de la API tiene la forma de un diccionario, con todos los datos en pares clave:valor. Para que los datos sean más fáciles de ver y analizar, podemos convertirlos en un marco de datos de Pandas.

Para convertir nuestra respuesta en un marco de datos, primero debemos crear algunas listas vacías para contener las métricas y dimensiones.

Luego, llamando a la salida de respuesta, agregaremos los datos de las dimensiones a la lista de dimensiones vacías y un recuento de las métricas a la lista de métricas.

Esto extraerá los datos y los agregará a nuestras listas previamente vacías.

dim = []
metric = []

for report in response.get('reports', []):

columnHeader = report.get('columnHeader', {})
dimensionHeaders = columnHeader.get('dimensions', [])
metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
rows = report.get('data', {}).get('rows', [])

for row in rows:

dimensions = row.get('dimensions', [])
dateRangeValues = row.get('metrics', [])

for header, dimension in zip(dimensionHeaders, dimensions):
dim.append(dimension)

for i, values in enumerate(dateRangeValues):
for metricHeader, value in zip(metricHeaders, values.get('values')):
metric.append(int(value))

Agregar los datos de respuesta

Una vez que los datos están en esas listas, podemos convertirlos fácilmente en un marco de datos definiendo los nombres de las columnas, entre corchetes, y asignando los valores de la lista a cada columna.

df = pd.DataFrame()
df["Sessions"]= metric
df["Medium"]= dim
df= df[["Medium","Sessions"]]
df.head()

Ejemplo de trama de datos 

Más ejemplos de solicitudes de respuesta

Múltiples Métricas

También existe la posibilidad de combinar múltiples métricas, con cada par agregado entre llaves y separado por una coma.

'metrics': [
              {"expression": "ga:pageviews"},
              {"expression": "ga:sessions"}
          ]

Filtración

También puede solicitar que la respuesta de la API solo devuelva métricas que devuelvan ciertos criterios agregando filtros de métricas. Utiliza el siguiente formato:

if {metricName} {operator} {comparisonValue}
   return the metric

Por ejemplo, si solo desea extraer páginas vistas con más de diez vistas.

response = service.reports().batchGet(
    body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:pageviews'}],
          'dimensions': [{'name': 'ga:pagePath'}],

"metricFilterClauses": [{
"filters": [{
"metricName": "ga:pageviews",
"operator": "GREATER_THAN",
"comparisonValue": "10"
}]
}]
}]
}
).execute()

Los filtros también funcionan para las dimensiones de manera similar, pero las expresiones de filtro serán ligeramente diferentes debido a la naturaleza característica de las dimensiones.

Por ejemplo, si solo desea extraer páginas vistas de los usuarios que han visitado el sitio con el navegador Chrome, puede configurar un operador EXTRAER y usar ‘Chrome’ como expresión.

response = service.reports().batchGet(
    body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:pageviews'}],
          "dimensions": [{"name": "ga:browser"}],
          "dimensionFilterClauses": [
        {
          "filters": [
            {
              "dimensionName": "ga:browser",
              "operator": "EXACT",
              "expressions": ["Chrome"]
            }
          ]
        }
      ]
    }
  ]
}
).execute()

Expresiones

Como las métricas son medidas cuantitativas, también existe la posibilidad de escribir expresiones, que funcionan de manera similar a las métricas calculadas.

Esto implica definir un alias para representar la expresión y completar una función matemática en dos métricas.

Por ejemplo, puede calcular las finalizaciones por usuario dividiendo el número de finalizaciones por el número de usuarios.

response = service.reports().batchGet(
    body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
          "metrics":
      [
        {
          "expression": "ga:goal1completions/ga:users",
          "alias": "completions per user"
        }
      ]
    }
  ]
}
).execute()

Histogramas

La API también le permite clasificar dimensiones con un valor entero (numérico) en rangos utilizando depósitos de histograma.

Por ejemplo, al agrupar la dimensión de conteo de sesiones en cuatro segmentos de 1-9, 10-99, 100-199 y 200-399, puede usar el tipo de orden HISTOGRAM_BUCKET y definir los rangos en histogramBuckets.

response = service.reports().batchGet(
    body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}],
          "metrics": [{"expression": "ga:sessions"}],
          "dimensions": [
        {
              "name": "ga:sessionCount",
              "histogramBuckets": ["1","10","100","200","400"]
        }
      ],
         "orderBys": [
        {
              "fieldName": "ga:sessionCount",
              "orderType": "HISTOGRAM_BUCKET"
        }
      ]
    }
  ]
}
).execute()
Ejemplo de histograma Captura de pantalla del autor, diciembre de 2022

En conclusión

Espero que esto le haya proporcionado una guía básica para acceder a la API de Google Analytics, escribir algunas solicitudes diferentes y recopilar información significativa en un formato fácil de ver.

Agregué el código de compilación y solicitud, y los fragmentos compartidos en este archivo de GitHub.

Me encantaría saber si prueba alguno de estos y sus planes para explorar más los datos.

Más recursos:


Imagen destacada: BestForBest/Shutterstock


Con información de Search Engine Journal.

Leer la nota Completa > Cómo acceder a la API de Google Analytics a través de Python

LEAVE A REPLY

Please enter your comment!
Please enter your name here