API de Hello Analytics: Guía de inicio rápido de Python para cuentas de servicio

En este instructivo, se explican los pasos necesarios para acceder a una cuenta de Google Analytics, consultar las APIs de Analytics, manejar las respuestas de la API y generar los resultados. En este instructivo, se usan la API de Core Reporting v3.0, la API de Management v3.0 y OAuth2.0.

Paso 1: Habilita la API de Analytics

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

Crea un ID de cliente

  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.

Agregar una cuenta de servicio a una cuenta de Google Analytics

La cuenta de servicio recién creada tendrá una dirección de correo electrónico, <projectId>-<uniqueId>@developer.gserviceaccount.com. Usa esta dirección de correo electrónico para agregar un usuario a la cuenta 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.

Paso 2: Instala la biblioteca cliente de Google

Puedes usar un administrador de paquetes o descargar una biblioteca cliente de Python para instalarla de forma manual:

pip

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

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

Herramientas de configuración

Usa la herramienta easy_install que se incluye en el paquete setuptools:

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

Instalación manual

Descarga la biblioteca cliente para Python más reciente, descomprime el código y ejecuta lo siguiente:

sudo python setup.py install

Es posible que debas invocar el comando con privilegios de superusuario (sudo) para realizar la instalación en el sistema Python.

Paso 3: Configura la muestra

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

  1. Copia o descarga el siguiente código fuente en HelloAnalytics.py.
  2. Mueve el client_secrets.json descargado previamente dentro del mismo directorio que el código de muestra.
  3. Reemplaza los valores de key_file_location por los valores adecuados de Play 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: Ejecuta la muestra

Después de habilitar la API de Analytics, instala la biblioteca cliente de las APIs de Google para Python y configura el código fuente de muestra que la muestra está lista para ejecutarse.

Ejecuta la muestra con el comando siguiente:

python HelloAnalytics.py

Cuando termines estos pasos, la muestra mostrará el nombre de la primera vista (perfil) de Google Analytics del usuario autorizado y la cantidad de sesiones de los últimos siete días.

Con el objeto de servicio autorizado de Analytics, ahora puedes ejecutar cualquiera de las muestras de código que se encuentran en los documentos de referencia de la API de Management. Por ejemplo, podrías intentar cambiar el código para usar el método accountSummaries.list.

Solución de problemas

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

Este error puede ocurrir en Mac OS X, 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:

  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 a tu archivo ~/.bashrc y reemplaza <pip_install_path> por el valor determinado anteriormente:

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

    source ~/.bashrc