API Hello Analytics: inicio rápido en Python para cuentas de servicio

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 enviar 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

  1. Abre la página Cuentas de servicio. Si se te solicita, selecciona un proyecto.
  2. Haz clic en Create service account (Crear cuenta de servicio).
  3. En la ventana Create service account (Crear cuenta de servicio), escribe el nombre de la cuenta de servicio y selecciona Furnish a new private key (Suministrar una nueva clave privada). Si quieres conceder autoridad en todo el dominio de G Suite a la cuenta de servicio, selecciona también Habilitar delegación de todo el dominio de G Suite. A continuación, haz clic en Create (Crear).

El nuevo par de claves pública/privada se genera y se descarga en el equipo, lo que sirve de copia única de esta clave. Eres responsable de almacenarlo de forma segura.

Añadir la cuenta de servicio a la cuenta de Google Analytics

La cuenta de servicio recién creada tendrá la dirección de correo electrónico &ltprojectId&gt-&ltuniqueId&gt@developer.gserviceaccount.com. Utiliza esta dirección para agregar un usuario a la cuenta de Google Analytics a la que quieras acceder a través de la API. Para este tutorial solo se necesitan los permisos Leer y analizar.

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, desempaqueta 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 la 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.
  3. Sustituye los valores de key_file_location por los valores adecuados de Developers Console.
"""A simple example of how to access the Google Analytics API."""

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

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

    Args:
        api_name: The name of the api to connect to.
        api_version: The api version to connect to.
        scopes: A list auth scopes to authorize for the application.
        key_file_location: The path to a valid service account JSON key file.

    Returns:
        A service that is connected to the specified API.
    """

    credentials = ServiceAccountCredentials.from_json_keyfile_name(
            key_file_location, scopes=scopes)

    # Build the service object.
    service = build(api_name, api_version, credentials=credentials)

    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 this 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 within 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):', results.get('profileInfo').get('profileName')
        print 'Total Sessions:', 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'
    key_file_location = '<REPLACE_WITH_JSON_FILE>'

    # Authenticate and construct service.
    service = get_service(
            api_name='analytics',
            api_version='v3',
            scopes=[scope],
            key_file_location=key_file_location)

    profile_id = get_first_profile_id(service)
    print_results(get_results(service, profile_id))

if __name__ == '__main__':
    main()

Paso 4: Ejecutar el código de 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 el código de muestra con el siguiente comando:

python HelloAnalytics.py

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, podrías intentar 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, agrega 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 Terminal abierta mediante el siguiente comando:

    source ~/.bashrc