IFTTT y la conexión de eventos entre canales online

0
3632

En este tutorial vamos a jugar con la herramienta ifttt y la conexión de eventos de gmail con la exportación a hojas de cálculo de drive para gestionar tareas pendientes.

IFTTT y la conexión de eventos entre canales online.

0. Índice de contenidos.


1. Introducción

IFTTT (If This Then That) es algo así como «si esto entonces aquello» donde «esto» puede ser cualquier evento de los
canales que soporta la plataforma y «aquello» igualmente una acción sobre los mismos y hay multitud de canales, y
cada vez más, que publican en sus APIs la posibilidad de consumirlos.

Hay infinidad de ejemplos, que denominan recetas, que publican los usuarios y mediante las cuáles podemos configurar
nuestra cuenta de forma transparente, usando OAuth, dando permisos a la plataforma para consumir eventos y ejecutar
acciones de estos canales:

  • recibir adjuntos en gmail y subirlos automáticamente a dropbox,
  • recibir a primera hora un informe del tiempo,
  • almacenar en un documento de drive las llamadas que realizas desde tu móvil
  • recibir un correo con la geolocalización de donde dejaste aparcado tu BMW, si el sistema operativo soporta «ConnectedDrive Services»,
  • modificar el color de la luces de casa (philips) o adecuar la temperatura (Nest Thermostat) cuando empieza a llover

En este tutorial vamos a ver un ejemplo de cómo filtrar los correos recibidos en gmail para exportar la información
de los mismos a una hoja de cálculo de drive.

Quizás exista un método más sencillo o productivo de hacerlo, pero en este tutorial vamos a jugar con la herramienta ifttt
y alguna que otra fórmula y función de las hojas de cáculo del google para tener un control de los correos recibidos de una lista
de usuarios.

En Autentia para medir el estado de ánimo de los empleados, así como sus sensaciones en relación al proyecto del que
forman parte nos obligamos a enviar un informe semanal reportando esas sensaciones a la dirección. El resultado de este
tutorial será una hoja de control de los informes recibidos y un listado de aquellos empleados olvidadizos, dando la
posibilidad de enviar un correo para recordarles ese compromiso.

Podemos extrapolar este caso de uso a cualquier fase de gestión de un proyecto donde esperamos la recepción de
reportes por parte de un grupo de responsables.

2. Creación de una receta para filtrar la recepción de correos de gmail y exportarlos a una hoja de cálculo.

Vamos obviar la fase de registro porque es extremadamente obvia, os invito a entrar en ifttt.com y crear una receta


A continuación, lo primero es seleccionar el «this»


Veréis que podemos engancharnos a multitud de eventos de canales online, siempre y cuando tengamos cuenta de usuario,
en nuestro caso vamos a seleccionar gmail y la primera vez te exigirá vincular alguna de tus cuentas de gmail.


Lo siguiente es elegir un disparador, en nuestro caso «New email inbox from search»


A continuación indicamos parámetros de configuración del disparador, vamos a establecer un pattern para el subject
de modo tal que solo tenga en cuenta los mensajes entrantes que contengan en el asunto «[INFORME SEMANAL]»,…


Una vez creado el «this» lo siguiente es el «that»


Volvemos a buscar un canal que en nuestro caso será el drive de google


y una acción que será añadir una fila a la primera pestaña de una hoja de cálculo


Completamos los parámetros de la acción


Y con ello ya tenemos creado nuestra primera receta


Ahora si recibes un correo a la dirección configurada de gmail con dichas condiciones se exportará a una hoja «INFORME SEMANAL» de tu drive!



3. Jugando con funciones en google spreadsheet.

Ok, ya podríamos controlar los correos recibidos con un asunto determinado y
auditar la recepción de esos correos manualmente; podíamos haberlo exportado a otro canal online, pero vamos a jugar
con alguna formula para saber quién se ha olvidado de enviar ese informe…

Creamos una segunda pestaña en la hoja de cálculo con un listado de los correos electrónicos
de los usuarios de los cuáles esperamos esa notificación.


Y una tercera pestaña donde calcularemos los usuarios que faltan por enviarla añadiendo a la primera celda la siguiente formula

=query(arrayformula(iferror(if(match('Informes recibidos'!A:A;'Listado de Auténticos'!A:A;0)>0;"");'Listado de Auténticos'!A:A));"select Col1 where Col1<>'' order by Col1")

Con ello obtendremos un informe como el siguiente:


Que más podríamos pedir?, pues un botón que envíe un correo a todos los olvidadizos…

Para ello necesitamos crear una función de envío de correo, pulsando sobre

tenemos acceso a un editor en el que podemos declarar un par de funciones:


Las funciones serían las siguientes:

function sendMissingReportEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert('Envío de correos', 'Confirma el envío de un correo a los olvidadizos...', ui.ButtonSet.YES_NO);

  if (response == ui.Button.NO) {
    return;
  }
  
  var startRow = 1;  // First row of data to process
  var numRows = 2000;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  var subject = "Envío del informe semanal";
  // Logger.log(data);
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    if (emailAddress == ''){
      break;
    }
    var message = "Hola "+row[1]+" no hemos recibido el informe semanal, recuerda la importancia de enviarlo contándonos como crees que va el proyecto en el que estás y como te sientes. Cuando puedas, gracias!";
    Logger.log("sending email to "+emailAddress+" ... ")
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
function clearReportsInfo() {
  
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert('Limpieza', 'Confirma la limpieza de los informes recibidos...', ui.ButtonSet.YES_NO);

  // Process the user's response.
  if (response == ui.Button.NO) {
    return;
  }   
  
  var sheet = SpreadsheetApp.getActive().getSheetByName('Informes recibidos');
  sheet.getRange('A:A').clearContent(),
  sheet.getRange('B:B').clearContent(),
  sheet.getRange('C:C').clearContent();
  sheet.getRange('D:D').clearContent();  
}

Se pueden ejecutar y debugear y cuando estén probadas debemos publicarlas


proporcionando un nombre, descripción y número de versión


A partir de este momento podemos hacer uso de ellas en la hoja de cálculo, pero ¿cómo?… pues se pueden incluir
elementos gráficos y asociar la ejecución de funciones a los eventos de click


Podemos insertar una imagen:


buscándola directamente en google


Una vez tengamos las imágenes que estimemos oportunas


pulsando sobre el botón derecho en la flecha superior derecha


se mostrará un prompt como el que sigue donde debemos incluir el nombre de la función creada para el evento sobre el componente gráfico correspondiente.


Con ello ya tenemos las acciones asociadas a eventos sobre los elementos gráficos.


5. Referencias.

  • https://ifttt.com/channels/


6. Conclusiones.

Pues ya hemos jugado un rato, lo siguiente que será?, instalar el cliente de ifttt en el móvil y apagar las luces de la casa o encender el termostato?
¿encender la cafetera automáticamente cuando estés llegando a la oficina…

Un saludo.

Jose

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad