API de Hello Analytics Reporting v4; guía de inicio rápido de Python para cuentas de servicio

En este instructivo, se explican los pasos necesarios para acceder a la API de Analytics Reporting v4.

1. Habilita la API

Para comenzar a usar la API de Analytics Reporting v4, primero debes usar la herramienta de configuración, que te guiará para crear un proyecto en la Consola de API de Google, habilitar la API y crear credenciales.

Crea credenciales

  1. Abre la página Cuentas de servicio. Si se te solicita, selecciona un proyecto.
  2. Haz clic en Crear cuenta de servicio y, luego, ingresa un nombre y una descripción para la cuenta de servicio. Puedes usar el ID predeterminado de la cuenta de servicio o elegir uno que sea único y diferente. Cuando hayas terminado, haz clic en Crear.
  3. No es obligatoria la sección de Permisos de cuenta de servicio (opcional) que aparece a continuación. Haz clic en Continuar.
  4. En la pantalla Otorga a usuarios acceso a esta cuenta de servicio, desplázate hacia abajo hasta encontrar la sección Crear clave. Haz clic en Crear clave.
  5. En el panel lateral que aparece, selecciona el formato para tu clave. Se recomienda el código JSON.
  6. Haz clic en Crear. Ya se generó y descargó el nuevo par de claves pública y privada en tu equipo, que será la única copia. Para obtener más información a fin de almacenarla de forma segura, consulta Cómo administrar claves para cuentas de servicio.
  7. Haz clic en Cerrar, en el diálogo Se guardó la clave privada en tu computadora, y luego haz clic en Listo para regresar a la tabla de tus cuentas de servicio.

Agrega una cuenta de servicio a la cuenta de Google Analytics

La cuenta de servicio recién creada tendrá una dirección de correo electrónico similar a esta:

quickstart@PROJECT-ID.iam.gserviceaccount.com

Usa esta dirección de correo electrónico para agregar un usuario a la vista de Google Analytics a la que deseas acceder a través de la API. Para este instructivo, solo se necesitan los permisos de lectura y análisis.

2. Instala la biblioteca cliente

Se recomienda usar pip junto con venv para instalar paquetes de Python: sudo -s apt-get install python3-venv python3 -m venv analytics-quickstart source analytics-quickstart/bin/activate pip install --upgrade google-api-python-client pip install --upgrade oauth2client

3. Configura la muestra

Deberás crear un solo archivo llamado HelloAnalytics.py, que contendrá el código de muestra dado.

  1. Copia o descarga el siguiente código fuente en HelloAnalytics.py.
  2. Mueve el client_secrets.json descargado previamente al mismo directorio que el código de muestra.
  3. Reemplaza el valor de KEY_FILE_LOCATION por la ruta de acceso adecuada al archivo client_secrets.json descargado.
  4. Reemplaza el valor de VIEW_ID. Puedes utilizar el Explorador de cuentas para encontrar un ID de vista.
"""Hello Analytics Reporting API V4."""

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials


SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_analyticsreporting():
  """Initializes an Analytics Reporting API V4 service object.

  Returns:
    An authorized Analytics Reporting API V4 service object.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics


def get_report(analytics):
  """Queries the Analytics Reporting API V4.

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': 'ga:country'}]
        }]
      }
  ).execute()


def print_response(response):
  """Parses and prints the Analytics Reporting API V4 response.

  Args:
    response: An Analytics Reporting API V4 response.
  """
  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

    for row in report.get('data', {}).get('rows', []):
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print(header + ': ', dimension)

      for i, values in enumerate(dateRangeValues):
        print('Date range:', str(i))
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print(metricHeader.get('name') + ':', value)


def main():
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

if __name__ == '__main__':
  main()

4. Ejecutar la muestra

Ejecuta la muestra con el comando siguiente:

python HelloAnalytics.py

Cuando termines estos pasos, la muestra mostrará la cantidad de sesiones de los últimos siete días para la vista determinada.

Solución de problemas

AttributeError: el objeto 'Module_six_moves_urllib_parse' no tiene el atributo 'urlparse'

Este error puede ocurrir en Mac OSX, donde la instalación predeterminada del módulo "seis" (una dependencia de esta biblioteca) se carga antes de la que instaló pip. Para solucionar el problema, agrega la ubicación de instalación de pip a la variable de entorno del sistema PYTHONPATH:

  • Determina la ubicación de instalación de pip con el siguiente comando:

    pip show six | grep "Location:" | cut -d " " -f2

  • Agrega la siguiente línea a tu archivo ~/.bashrc y reemplaza &lt;pip_install_path&gt; por el valor determinado anteriormente:

    export PYTHONPATH=$PYTHONPATH:<ruta_de_instalación_pip>

  • Vuelve a cargar el archivo ~/.bashrc en cualquier ventana de terminal abierta con el siguiente comando:

    fuente ~/.bashrc