Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Cómo exportar tus datos de Ubidots a Google Sheets
Cómo exportar tus datos de Ubidots a Google Sheets

Exporta tus datos de Ubidots a Google Sheets para análisis adicionales.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 4 meses

Una consulta típica de nuestros usuarios es cómo extraer los datos almacenados en la nube de Ubidots para un análisis más detallado, y nuestra respuesta siempre ha sido usar nuestra API para obtener datos en formato JSON o CSV.

Sabemos que esta es una respuesta bastante genérica, por lo que queríamos dar un paso más allá y ver qué opciones hay para hacer el proceso un poco más amigable.

Después de investigar un poco, me enamoré de Google Apps Script. Es un servicio gratuito que te permite automatizar ciertas tareas de extracción/envío de datos utilizando los productos existentes de Google. El lenguaje es similar a JavaScript, y proporcionan suficientes ejemplos para empezar fácilmente. Después de jugar con él durante un tiempo, se crearon las siguientes guías para ayudarte:

Las posibilidades son enormes: Por ejemplo, podrías crear un generador de informes automático y enviarlo a tus clientes cada semana.

Otra aplicación sería la provisión de dispositivos: si tienes miles de dispositivos para desplegar y su información está en una hoja de Google, podrías crear un script para leer la hoja y crear una fuente de datos de Ubidots para cada línea del archivo.

Crear un script de Google Apps

Desde tu hoja de Google, haz clic en "Herramientas", luego "Editor de secuencias de comandos", luego "Proyecto en blanco":

Abre el Editor de secuencias de comandos:


Agrega el siguiente código (en la sección de código) al script.

//Replace the following constants with your Ubidots Token and the Variable(s) you wish to retrieve. 

var TOKEN = "PUT YOUR TOKEN HERE"
var URL = "http://industrial.api.ubidots.com/api/v1.6/"
var DEVICE_ID = "DEVICE-ID"
var VARIABLE_ID = "VARIABLE-ID"
var NUMBER_OF_VALUES = "100" // Number of values to retieve from the variable.
var VARIABLE_SHEET = "Variables" // Name of the sheet where the variables values will be store.
var VALUES_SHEET = "Values" // Name of the sheet where the values from the variable will be store.
function onOpen() {
var sheet = SpreadsheetApp.getActive();

var menuItems = [
{name: 'Get Ubidots Variables', functionName: 'get_ds_variables'},
{name: 'Get Data', functionName: 'get_variable_data'}
];

sheet.addMenu('Ubidots', menuItems);
}

function get_ds_variables(){

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(VARIABLE_SHEET);

if (sheet != null) {
SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheet);
}

sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
sheet.setName(VARIABLE_SHEET);

var options =
{
"contentType" : "application/json",
"headers" : {"X-Auth-Token": TOKEN},
"method": "get"
};

var response = UrlFetchApp.fetch(URL + "datasources/"+ DEVICE_ID +"/variables/", options);
var obj = JSON.parse(response).results

for (var i = 0, l = obj.length; i < l; i++) {
var date = new Date(obj[i].last_activity)
sheet.appendRow([obj[i].name, date, obj[i].last_value.value, obj[i].unit]);
}
}

function get_variable_data(){

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(VALUES_SHEET);
if (sheet != null) {
SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheet);
}

sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
sheet.setName(VALUES_SHEET);

var options =
{
"contentType" : "application/json",
"headers" : {"X-Auth-Token": TOKEN},
"method": "get"
};

var response = UrlFetchApp.fetch( URL + "variables/"+ VARIABLE_ID +"/values/?page_size="+ NUMBER_OF_VALUES, options);
var obj = JSON.parse(response).results

for (var i = 0, l = obj.length; i < l; i++) {
var date = new Date(obj[i].timestamp)
sheet.appendRow([date, obj[i].value, obj[i].context]);
}
}

¡Listo! Ahora abre tu hoja de Google nuevamente y verás un nuevo menú para activar las funciones:

Finalmente, ejecuta las funciones para extraer tus datos. La primera "Obtener Variables de Ubidots" recuperará las variables de la fuente de datos especificada. La segunda "Obtener Datos" recuperará los valores de la variable especificada. A partir de ahí, puedes crear tablas dinámicas, obtener datos de otras fuentes, etc. Por ejemplo, ¿qué tal usar la integración de Google Sheets de Piktochart para crear un informe hermoso para tus clientes?

Resultados

Un gráfico de Google creado a partir de los datos extraídos de Ubidots:

¿Ha quedado contestada tu pregunta?