API Hello Analytics: inicio rápido en Python para aplicaciones descargadas

Este tutorial te guiará a través de los pasos necesarios para acceder a una cuenta de Google Analytics, consultar las API de Google Analytics, gestionar las respuestas de la API y extraer los resultados. Para ello, se usan la API de informes centrales v3.0, la API de administración v3.0 y OAuth 2.0.

Paso 1: Habilitar la API de Analytics

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

Crear un ID de cliente

En la página de credenciales:

  1. Haz clic en Create credentials (Crear credenciales) y selecciona OAuth client ID (ID de cliente de OAuth).
  2. Selecciona Other (Otro) en APPLICATION TYPE (Tipo de aplicación).
  3. Da un nombre a las credenciales.
  4. Haz clic en Create (Crear).

Selecciona las credenciales que acabas de crear y haz clic en Descargar JSON. Guarda el archivo descargado con el nombre client_secrets.json, lo necesitarás más adelante en el tutorial.

Paso 2: instalar la biblioteca de cliente de Google

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 biblioteca de cliente más reciente para Python, descomprime el código y ejecuta este comando:

sudo python setup.py install

Es posible que debas invocar el comando con privilegios de superusuario (sudo) para instalar el sistema Python.

Paso 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 que el código de muestra.
"""A simple example of how to access the Google Analytics API."""

import argparse

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

def get_service(api_name, api_version, scope, client_secrets_path):
  """Get a service that communicates to a Google API.

  Args:
    api_name: string The name of the api to connect to.
    api_version: string The api version to connect to.
    scope: A list of strings representing the auth scopes to authorize for the
      connection.
    client_secrets_path: string A path to a valid client secrets file.

  Returns:
    A service that is connected to the specified API.
  """
  # 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=scope,
      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(api_name + '.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.
  service = build(api_name, api_version, http=http)

  return service

def get_first_profile_id(service):
  # Use the Analytics service object to get the first profile id.

  # Get a list of all Google Analytics accounts for the authorized user.
  accounts = service.management().accounts().list().execute()

  if accounts.get('items'):
    # Get the first Google Analytics account.
    account = accounts.get('items')[0].get('id')

    # Get a list of all the properties for the first account.
    properties = service.management().webproperties().list(
        accountId=account).execute()

    if properties.get('items'):
      # Get the first property id.
      property = properties.get('items')[0].get('id')

      # Get a list of all views (profiles) for the first property.
      profiles = service.management().profiles().list(
          accountId=account,
          webPropertyId=property).execute()

      if profiles.get('items'):
        # return the first view (profile) id.
        return profiles.get('items')[0].get('id')

  return None

def get_results(service, profile_id):
  # Use the Analytics Service Object to query the Core Reporting API
  # for the number of sessions in the past seven days.
  return service.data().ga().get(
      ids='ga:' + profile_id,
      start_date='7daysAgo',
      end_date='today',
      metrics='ga:sessions').execute()

def print_results(results):
  # Print data nicely for the user.
  if results:
    print 'View (Profile): %s' % results.get('profileInfo').get('profileName')
    print 'Total Sessions: %s' % results.get('rows')[0][0]

  else:
    print 'No results found'

def main():
  # Define the auth scopes to request.
  scope = ['https://www.googleapis.com/auth/analytics.readonly']

  # Authenticate and construct service.
  service = get_service('analytics', 'v3', scope, 'client_secrets.json')
  profile = get_first_profile_id(service)
  print_results(get_results(service, profile))

if __name__ == '__main__':
  main()

Paso 4: ejecutar la muestra

Después de haber habilitado la API de Analytics, de haber instalado la biblioteca de cliente para Python de las API de Google y de haber configurado el código fuente, la muestra estará lista para ejecutarse.

Ejecuta la muestra con el siguiente comando:

python HelloAnalytics.py
  1. La aplicación cargará la página de autorización en un navegador.
  2. 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, la muestra envía el nombre de la primera vista (perfil) de Google Analytics del usuario autorizado y el número de sesiones de los últimos siete días.

Con el objeto de servicio de Analytics autorizado ya puedes ejecutar cualquiera de las muestras de código que se encuentran en los documentos de referencia de la API de administración. Por ejemplo, puedes probar a cambiar el código para usar el método accountSummaries.list.

Solución de 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, añade la ubicación de instalación de pip a la variable del entorno del sistema PYTHONPATH:

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

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

  2. Agrega la siguiente línea de código a tu archivo ~/.bashrc y sustituye <pip_install_path> por el valor determinado anteriormente:

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>
    
  3. Vuelve a cargar el archivo ~/.bashrc en cualquier ventana de terminal abierta mediante el siguiente comando:

    source ~/.bashrc