Google Apps Scripts son una herramienta poderosa para extender la usabilidad de productos de Google como Docs, Sheets y Slides, entre otros. Google Apps Scripts tienen una amplia gama de clases y bibliotecas de JavaScript que permiten a los usuarios crear complementos y automatizar muchas tareas al usar productos de Google.
Google Apps Script proporciona más de 30 servicios integrados para interactuar con los datos del usuario, otros sistemas de Google y sistemas externos. Estos servicios se proporcionan como objetos globales similares al objeto estándar de JavaScript Math. Por ejemplo, así como Math ofrece métodos como random()
y constantes como PI, el servicio de Hojas de Cálculo de Apps Script ofrece métodos como openById(id), clases (objetos secundarios) como Range, y enums como DataValidationCriteria.
Siguiendo esta guía, podrás importar los datos de una Hoja de Cálculo de Google, adaptar la carga útil para que coincida con la API HTTP de Ubidots y publicar los datos en Ubidots donde se pueden utilizar de muchas maneras diferentes.
Usos comunes: Este uso particular de importar datos es vasto, pero puede ser especialmente útil al importar datos históricos para llenar vacíos, analizar datos históricos con datos recientes o conjuntos de datos simulados para desarrollar aún más la aplicación IoT del usuario final que se está ensamblando en Ubidots.
Requisitos
Una cuenta activa de Ubidots
Datos en una Hoja de Cálculo de Google (formateados para código)
Paso a Paso
Configuración de Datos de Google Sheets
Configuración del Editor de Scripts de Google
Enviar Datos a Ubidots
1. Configuración de datos de Google Sheet
Paso 1: Abre una Hoja de Cálculo de Google de un conjunto de datos preexistente o copia/pega un conjunto de datos en una nueva hoja. Se requiere que los datos estén organizados en columnas siguiendo la estructura a continuación:
Columna A - Marca de tiempo (YYYY-MM-DDTHH:mm:ss)
Columna B - “Etiqueta de Variable 1”
Columna C - “Etiqueta de Variable 2”
Columna D - "Etiqueta de Variable 3"
Columna E - "Etiqueta de Variable 4"
Columna F - "Etiqueta de Variable 5"
Columna G - Enviado
Ten en cuenta que la primera columna corresponde a la marca de tiempo de cada punto de datos (puntos como los llamamos en Ubidots) y está formateada a una marca de tiempo legible como YYYY-MM-DDTHH:mm:dd:ss
. Las siguientes columnas de la hoja son las variables que se cargarán en Ubidots con sus respectivos valores de marca de tiempo.
La columna final debe etiquetarse como “Enviado” y se actualizará automáticamente por el script tras una recepción exitosa de puntos en Ubidots.
NOTA: Si alguna celda queda vacía, el script utilizado para importar datos omitirá esa celda y continuará con la importación.
NOTA 2: La hoja debe llamarse "Datos".
2. Configuración del Editor de Scripts de Google
Desde la Hoja de Cálculo de Google formateada como en el Paso 1, selecciona “Herramientas” en el menú desplegable de la barra principal de Sheets y luego la opción “Editor de scripts”:
Paso 1: Crea un script Extensiones → Apps Script
Se abrirá una nueva pestaña con el Editor de Scripts de Google.
Paso 2: Edita el título del proyecto y el nombre del script. Nombramos nuestro proyecto de ejemplo y el nombre del script como “SendToUbidots” respectivamente.
Paso 3: Borra cualquier código existente, luego Copia y Pega el siguiente código en el editor. Asegúrate de actualizar donde se indica tu cuenta de Ubidots TOKEN en la línea 1 y luego asigna DEVICE_LABEL en la línea 2 del Dispositivo en Ubidots que albergará los datos de las variables.
var TOKEN = "PUT-YOUR-TOKEN-HERE";var DEVICE_LABEL = "Google-sheet"; // Cambia la etiqueta del dispositivo según deseesfunction onOpen() { var sheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'Enviar Datos', functionName: 'sendData'} ]; sheet.addMenu('Ubidots', menuItems);} function sendData() { var sheetApp = SpreadsheetApp.getActive(); var sheet = sheetApp.getSheetByName("Datos"); var data = sheet.getDataRange().getValues(); var payload = {}; for (var i = 1; i < data.length; i++) { var date = new Date(data[i][0]); var timestamp = date.getTime(); for (var j = 1; j < data[0].length - 1; j++){ payload[data[0][j]] = {"value": data[i][j], "timestamp": timestamp}; } var status = send_to_ubidots(DEVICE_LABEL, payload); if (status == null){ sheet.activate().getDataRange().getCell(i + 1,data[0].length).setValue("No se pudo enviar datos"); } else{ sheet.activate().getDataRange().getCell(i + 1,data[0].length).setValue("Enviado"); } Utilities.sleep(500); }}function send_to_ubidots(device_label, payload){ var options = { "contentType" : "application/json", "headers" : {"X-Auth-Token": TOKEN}, "payload": JSON.stringify(payload), "method": "post" };// Enviar solicitud HTTP POST a Ubidots try{ var response = UrlFetchApp.fetch("https://industrial.api.ubidots.com/api/v1.6/devices/" + device_label + "/?force=true", options); if(response.getResponseCode() == 200){ return JSON.parse(response.getContentText()); } } catch(e) { // Si no es exitoso SpreadsheetApp.getUi().alert(e.message); return null; }}
Paso 4: Guarda el código haciendo clic en el ícono de “Guardar” y luego estarás listo para importar datos a Ubidots.
3. Enviar Datos a Ubidots
Después de guardar el script en la instrucción anterior, aparecerá un nuevo menú desplegable en la barra principal de tu Hoja de Cálculo, como se muestra a continuación. Allí puedes encontrar tu script “Ubidots” y, una vez clicado, la opción "Enviar Datos" estará disponible.
Selecciona "Enviar Datos" para ejecutar el script e importar datos.
Después de hacer clic en "Enviar Datos", el script se ejecutará automáticamente leyendo la tabla formateada para enviar cada punto (celda) al dispositivo designado en Ubidots de acuerdo con la marca de tiempo asignada.
4. Resultados
Ahora con los datos simplemente disponibles en Ubidots, puedes continuar ensamblando y perfeccionando tu aplicación IoT según sea necesario.
Otros usuarios también encontraron útil: