Nick Mihailovski, equipo de la API de Google Analytics – agosto de 2012
En este instructivo, se describe cómo acceder a las API de administración y de informes principales dentro de Hojas de cálculo de Google con Apps Script.
Introducción
Puedes usar la API de Google Analytics y Google Apps Script para acceder a tus datos de Google Analytics desde Hojas de cálculo de Google. Esto es muy útil porque te permite usar todas las excelentes funciones de Hojas de cálculo de Google con tus datos de estadísticas, como las herramientas de uso compartido, colaboración, creación de gráficos y visualización.
En este instructivo, se explica el código necesario para acceder a tus datos de Google Analytics en Hojas de cálculo de Google con Google Apps Script.
Descripción general
En este instructivo, se muestra cómo registrar y configurar el entorno de Apps Script para usar la API de Google Analytics. Una vez configurado, en el instructivo se explica cómo recuperar un ID de vista (perfil) para el usuario autorizado mediante la API de Management. Luego, aprenderás a usar el ID de vista (perfil) para consultar la API de Core Reporting a fin de recuperar las 250 palabras clave principales de la búsqueda en dispositivos móviles de Google. Por último, los resultados se insertarán en una hoja de cálculo de Google. Una vez que tengas los datos, en el instructivo también se analiza cómo automatizar la recuperación de datos.
Cuando compilas una aplicación con la API de Google Analytics y Apps Script, por lo general, debes realizar los siguientes pasos:
- Habilite las API de Google Analytics en Hojas de cálculo de Google
- Trabajar con las API de Google Analytics
Analicemos cada paso en detalle.
Habilite la API de Google Analytics en Apps Script
Para habilitar el acceso a tus datos de Google Analytics desde Hojas de cálculo de Google, sigue estos pasos:
- Crea un archivo de Hojas de cálculo de Google. Ponle un nombre genial.
- Cree una nueva secuencia de comandos de Apps Script.
- En el menú, ve a Extensiones > Apps Script.
- Si aparece un menú emergente, haz clic en Proyecto en blanco.
- Asigna un nombre al proyecto. Asegúrate de que tenga un nombre genial.
Una vez que tengas una secuencia de comandos nueva, debes habilitar el servicio de Google Analytics.
- En el editor de secuencias de comandos, selecciona Recursos > Avanzado Google services...
- En el cuadro de diálogo que aparece, haz clic en el interruptor para activar o desactivar la API de Google Analytics.
- En la parte inferior del diálogo, haz clic en el vínculo de Google Developers Console.
- En la nueva consola, vuelve a hacer clic en el interruptor para activar o desactivar la API de Google Analytics. (Una vez habilitado, pasará a la parte superior de la página).
- Regresa al editor de secuencias de comandos y haz clic en Aceptar en el cuadro de diálogo.
Aparecerá un pequeño cuadro de diálogo amarillo que indica que agregó correctamente un nuevo servicio de las API de Google a su secuencia de comandos. Ahora estás listo para comenzar a escribir tu primera secuencia de comandos.
Trabajar con la API de Google Analytics
Con la secuencia de comandos de este instructivo, se consultará la API de Google Analytics por las 250 palabras clave principales de la búsqueda en dispositivos móviles de Google y, luego, se mostrarán los resultados en Hojas de cálculo de Google. Para lograrlo, la secuencia de comandos realizará los siguientes pasos:
- Recupera la primera vista del usuario autorizado (perfil).
- Consulta la API de Core Reporting para obtener datos.
- Inserta datos en una hoja de cálculo.
Agrega la siguiente función al proyecto en blanco.
function runDemo() { try { var firstProfile = getFirstProfile(); var results = getReportDataForProfile(firstProfile); outputToSpreadsheet(results); } catch(error) { Browser.msgBox(error.message); } }
En el código anterior, se usa un bloque try...catch
para manejar cualquier error de API. Si se produce algún error, se detendrá la ejecución del programa y
se mostrará en un cuadro de mensaje. En el bloque try
, se usa una función para realizar cada uno de los pasos por los que pasará la secuencia de comandos. Ahora, agreguemos el código para cada una de estas funciones.
Recuperar la primera vista del usuario autorizado (perfil)
En Google Analytics, cada informe pertenece a una vista (perfil) y se identifica mediante un ID de vista (perfil). Por lo tanto, cuando especificas una consulta para datos de informes, también debes especificar el ID de la vista (perfil) de la vista (perfil) de la que deseas recuperar datos.
La API de administración de Google Analytics proporciona acceso a todas las cuentas, propiedades web y entidades de vistas (perfiles) que pertenecen a un usuario. Cada una de estas entidades pertenece a una jerarquía, y puedes desviarla de manera programática a fin de recuperar un ID de vista (perfil) para el usuario autorizado.
La segunda función que escribiremos atravesará la jerarquía de la API de administración y mostrará la primera vista (perfil) del usuario. Copia y pega el siguiente código en tu proyecto de Apps Script:
function getFirstProfile() { var accounts = Analytics.Management.Accounts.list(); if (accounts.getItems()) { var firstAccountId = accounts.getItems()[0].getId(); var webProperties = Analytics.Management.Webproperties.list(firstAccountId); if (webProperties.getItems()) { var firstWebPropertyId = webProperties.getItems()[0].getId(); var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId); if (profiles.getItems()) { var firstProfile = profiles.getItems()[0]; return firstProfile; } else { throw new Error('No views (profiles) found.'); } } else { throw new Error('No webproperties found.'); } } else { throw new Error('No accounts found.'); } }
En esta función, primero se consulta la colección de cuentas con el método Analytics.Management.Accounts.list
. Si el usuario autorizado tiene cuentas de Google Analytics, se recupera el ID de la primera cuenta. A continuación, se consulta la colección de propiedades web llamando al método Analytics.Management.Webproperties.list
y pasando el método al ID de cuenta recuperado en el paso anterior.
Si existen propiedades web, la consulta de vista (perfil) finalmente se consulta con el método Analytics.Management.Profiles.list
. Tanto el ID de cuenta como el de propiedad web se pasan como parámetros a este método. Si existen vistas (perfiles), se muestra la primera vista (perfil).
Si en algún momento se produce un error de API o si la respuesta de la API no contiene resultados, se genera un error con un mensaje que describe que no se encontraron resultados. El bloque catch
de la función runDemo
anterior detectará este error y mostrará el mensaje al usuario.
Después de que se muestre la secuencia de comandos, podrá consultar datos de informes.
Consulta la API de Core Reporting para obtener datos.
Una vez que tengas un ID de vista (perfil), usa la API de informes principales para consultar los datos de informes de Google Analytics. En esta sección, aprenderás a consultar esta API con Apps Script.
Agrega el siguiente código a tu proyecto de Apps Script:
function getReportDataForProfile(firstProfile) { var profileId = firstProfile.getId(); var tableId = 'ga:' + profileId; var startDate = getLastNdays(14); // 2 weeks (a fortnight) ago. var endDate = getLastNdays(0); // Today. var optArgs = { 'dimensions': 'ga:keyword', // Comma separated list of dimensions. 'sort': '-ga:sessions,ga:keyword', // Sort by sessions descending, then keyword. 'segment': 'dynamic::ga:isMobile==Yes', // Process only mobile traffic. 'filters': 'ga:source==google', // Display only google traffic. 'start-index': '1', 'max-results': '250' // Display the first 250 results. }; // Make a request to the API. var results = Analytics.Data.Ga.get( tableId, // Table id (format ga:xxxxxx). startDate, // Start-date (format yyyy-MM-dd). endDate, // End-date (format yyyy-MM-dd). 'ga:sessions,ga:pageviews', // Comma seperated list of metrics. optArgs); if (results.getRows()) { return results; } else { throw new Error('No views (profiles) found'); } } function getLastNdays(nDaysAgo) { var today = new Date(); var before = new Date(); before.setDate(today.getDate() - nDaysAgo); return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); }
La primera parte del código construye una consulta a la API de Core Reporting con el método Analytics.Data.Ga.get
. El método acepta un grupo de parámetros que especifican el tipo de informe que se recuperará. Cada consulta principal de la API de informes consta de un conjunto de parámetros obligatorios y opcionales. Los parámetros obligatorios se pasan al método como parámetros, mientras que los parámetros opcionales se pasan como un objeto.
El parámetro table ID
es obligatorio y se forma mediante la combinación del prefijo ga:
con el ID de la vista (perfil). El código crea el ID de la tabla mediante el ID de la vista (perfil) recuperado en el paso anterior. Las fechas de inicio y finalización también son obligatorias y especifican el período de los datos que se recuperarán.
Ambos se calculan según la fecha de hoy con la función getLastNdays
. Por último, todos los parámetros opcionales se pasan a la función con el objeto optArgs
.
Cuando se ejecuta el método Analytics.Data.Ga.get
, se realiza una solicitud a la API de Core Reporting. Si se produce un error, se detecta en el bloque try...catch
definido en el método runDemo
externo. Si la solicitud se realizó correctamente, se mostrarán los resultados.
Insertar datos en una hoja de cálculo
El último paso de nuestra secuencia de comandos es enviar los resultados de la API de Core Reporting a Hojas de cálculo de Google. El método outputToSpreadsheet
realiza esta acción. Agrega el siguiente código a tu proyecto:
function outputToSpreadsheet(results) { var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(); // Print the headers. var headerNames = []; for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) { headerNames.push(header.getName()); } sheet.getRange(1, 1, 1, headerNames.length) .setValues([headerNames]); // Print the rows of data. sheet.getRange(2, 1, results.getRows().length, headerNames.length) .setValues(results.getRows()); }
Esta función primero inserta una nueva hoja en la hoja de cálculo activa. Luego, inserta todos los encabezados y los datos de informes en la hoja. Para obtener más sugerencias sobre cómo insertar datos en Hojas de cálculo de Google, consulta Escribe datos de objetos JavaScript en una hoja de cálculo en el instructivo Cómo almacenar datos en hojas de cálculo.
Ejecuta la secuencia de comandos
Una vez que hayas agregado todo el código al proyecto, podrás ejecutarlo.
- En la barra de herramientas del editor de secuencias de comandos, selecciona
runDemo
en el menú desplegable de selección de funciones. - Luego, haga clic en el botón
play
.
La primera vez que ejecutes esto, aparecerá un cuadro emergente en el que deberás autorizar a esta secuencia de comandos para acceder a los datos de tu cuenta de Google Analytics.
Haz clic en Autorizar.
Una vez que hagas clic, se abrirá una página nueva alojada en google.com y se te pedirá que otorgues acceso a tus datos a esta secuencia de comandos. Una vez que hagas clic en Permitir, se te redireccionará a una página de confirmación. En este punto, la secuencia de comandos podrá acceder a tus datos de Google Analytics y continuar ejecutándose.
Una vez que se ejecute la secuencia de comandos, haga clic en la ventana con Hojas de cálculo de Google. Deberías ver todos los datos de las palabras clave que muestra la API o un cuadro de mensaje con un mensaje de error.
Automatiza la secuencia de comandos
En este punto, debería tener una secuencia de comandos que consulte la API de Google Analytics.
Es posible que ahora quieras automatizar esta secuencia de comandos para recuperar datos nuevos todas las noches.
Apps Script facilita la automatización con la función triggers
.
Para automatizar esta secuencia de comandos, sigue estos pasos:
- En la barra de herramientas del editor de secuencias de comandos, haga clic en
Resources -> All your triggers...
. - Haga clic en
Add a new trigger
. Aparecerá el cuadro de diálogo de los activadores. - Configura el activador para que ejecute el método
runDemo
todas las noches- El menú desplegable
Run
debe establecerse en:runDemo
- El menú desplegable
Events
debe establecerse en:Time-driven
,Day timer
yMidnight to 1am
.
- El menú desplegable
Una vez configurada, esta secuencia de comandos se ejecutará todas las noches y le proporcionará datos actualizados por la mañana.
Si se producen errores durante la noche, te recomendamos recibir una notificación. Apps Script también te permite enviar alertas por correo electrónico si se producen errores. Para configurar esto, en el cuadro de diálogo de los activadores, haz clic en el vínculo notifications
.
Aparecerá un nuevo cuadro de diálogo que te permitirá configurar a qué correo electrónico deseas que se envíen los errores.
Conclusión
se registró correctamente y autorizó el acceso a la secuencia de comandos. Si consultaste la API de Management varias veces para recuperar un ID de vista (perfil). Luego, usaste el ID de la vista (perfil) para consultar la API de Core Reporting a fin de recuperar datos y exportarlos a Hojas de cálculo de Google.
Usar las técnicas descritas en el instructivo te permitirá realizar análisis más complejos, obtener más estadísticas, crear paneles personalizados y reducir mucho tiempo en la ejecución de informes manuales.
A continuación, se incluyen otros instructivos útiles que pueden resultarte útiles para aprovechar al máximo la API de Google Analytics y Google Apps Script:
- Lectura de datos desde hojas de cálculo: Puedes especificar tus consultas de API en una hoja de cálculo en lugar de hacerlo en JavaScript.
- Insertar gráficos desde Hojas de cálculo en un sitio de Google para crear paneles en Google Sites con tus datos de Analytics.
- Menús personalizados: Permite que otros usuarios de tu empresa utilicen con facilidad las secuencias de comandos que escribes.