API de informes Hello Analytics, versión 4: inicio rápido en Python para las aplicaciones descargadas

Con la ayuda de este tutorial podrás seguir los pasos para acceder a la versión 4 de la API de informes de Analytics.

1. Habilitar la API

Para empezar a utilizar la versión 4 de la API de informes de Analytics, primero debes usar la herramienta de configuración, que te guiará por los pasos necesarios para crear un proyecto en la consola de APIs de Google, habilitar la API y crear las credenciales.

Nota: Para crear un ID de cliente web o un cliente para la aplicación descargada, debes definir un nombre de producto en la pantalla de consentimiento. Si todavía no lo has hecho, se te pedirá que realices el proceso de configuración de la pantalla de consentimiento.

Crear credenciales

  • Abre la página Credentials (Credenciales).
  • Haz clic en Create credentials (Crear credenciales) y selecciona OAuth client ID (ID de cliente de OAuth).
  • En Application type (Tipo de aplicación), selecciona Other (Otro).
  • En el campo del ID de cliente, indica quickstart y haz clic en Create (Crear).

En la página Credentials (Credenciales), haz clic en el ID de cliente que acabas de crear y, después, en Download JSON (Descargar JSON). Guarda el archivo como client_secrets.json; lo necesitarás más adelante en el tutorial.

2. Instalar la biblioteca de cliente

Puedes utilizar un administrador de paquetes o descargar e instalar la biblioteca de cliente Python manualmente:

pip

Usa pip, la herramienta recomendada para instalar paquetes de Python:

sudo pip install --upgrade google-api-python-client

Setuptools

Utiliza la herramienta easy_install incluida en el paquete setuptools:

sudo easy_install --upgrade google-api-python-client

Instalación manual

Descarga la última biblioteca de cliente para Python de la API de Google, desempaqueta el código y ejecuta este comando:

sudo python setup.py install

3. Configurar el código de muestra

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

  1. Copia o descarga el siguiente código fuente en HelloAnalytics.py.
  2. Traslada el archivo client_secrets.json descargado anteriormente al mismo directorio en el que se encuentra el código de muestra.
  3. Sustituye el valor de VIEW_ID por un ID de vista, que puedes obtener mediante el Explorador de cuentas.
"""Hello Analytics Reporting API V4."""

import argparse

from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
DISCOVERY_URI = ('https://analyticsreporting.googleapis.com/$discovery/rest')
CLIENT_SECRETS_PATH = 'client_secrets.json' # Path to client_secrets.json file.
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'

def initialize_analyticsreporting():
  """Initializes the analyticsreporting service object.

  Returns:
    analytics an authorized analyticsreporting service object.
  """
  # Parse command-line arguments.
  parser = argparse.ArgumentParser(
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args([])

  # Set up a Flow object to be used if we need to authenticate.
  flow = client.flow_from_clientsecrets(
      CLIENT_SECRETS_PATH, scope=SCOPES,
      message=tools.message_if_missing(CLIENT_SECRETS_PATH))

  # Prepare credentials, and authorize HTTP object with them.
  # If the credentials don't exist or are invalid run through the native client
  # flow. The Storage object will ensure that if successful the good
  # credentials will get written back to a file.
  storage = file.Storage('analyticsreporting.dat')
  credentials = storage.get()
  if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)
  http = credentials.authorize(http=httplib2.Http())

  # Build the service object.
  analytics = build('analytics', 'v4', http=http, discoveryServiceUrl=DISCOVERY_URI)

  return analytics

def get_report(analytics):
  # Use the Analytics Service Object to query the Analytics Reporting API V4.
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}]
        }]
      }
  ).execute()

def print_response(response):
  """Parses and prints the 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', [])
    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):
        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 el código de muestra

Ejecuta el código de muestra con el siguiente comando:

python HelloAnalytics.py
  • La aplicación cargará la página de autorización en un navegador.
  • Si todavía no has iniciado sesión en tu cuenta de Google, se te pedirá que lo hagas. Si has iniciado sesión en varias cuentas de Google, se te pedirá que selecciones una para usarla con la autorización.

Cuando finalices estos pasos, el código de muestra enviará el número de sesiones de los últimos siete días correspondiente a la vista indicada.

Solucionar problemas

AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlparse' (El objeto 'Module_six_moves_urllib_parse' no tiene el atributo 'urlparse')

Este error puede ocurrir en Mac OSX, ya que la instalación predeterminada del módulo "six" (una dependencia de esta biblioteca) se carga antes de la que instala pip. Para solucionar el problema, agrega la ubicación de instalación de pip a la variable del 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 de código a tu archivo ~/.bashrc y sustituye &lt;pip_install_path&gt; por el valor determinado en el punto anterior:

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>

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

    source ~/.bashrc