Eliminar mensajes de Gmail automáticamente.
Automatizar servicios de Google con scripts
Antiguamente la publicidad de Gmail te invitaba a no borrar ningún email, ni siquiera había una opción accesible para ello. Pero esto se ha acabado, ya no hay espacio ilimitado, actualmente Gmail te avisa cuando estás a punto de superar el límite de espacio concedido.
En realidad es normal que se ponga cierto límite al espacio consumido porque el almacenamiento ya no es lo que era, los emails de ahora pesan mucho más y suelen venir acompañados de muchos ficheros adjuntos y por si fuera poco tenemos Google Drive donde podemos guardar todo tipo de archivos.
Así que si alguna vez has recibido el fatídico aviso de estar a punto de agotar el espacio disponible, teniendo que liberar espacio, te has visto en una situación incómoda, porque la verdad es que no es tarea sencilla liberar espacio asignado a tu cuenta de Google.
Lo más inmediato es acudir a Google Drive a borrar todo lo que sea superfluo o excesivo, pero muchas veces te das cuenta de que el mayor porcentaje de espacio ocupado no corresponde a Drive sino a Gmail y aquí es cuando entras en el infierno de los emails.
¿Cómo descubrir qué emails son los que se están comiendo el tan preciado espacio? y ¿de verdad tengo que borrarlos uno a uno o a poquitos? Afortunadamente hay una solución que se llama Google Apps Script y que permite automatizar e interaccionar con los servicios de Google utilizando javascript para programar scripts que se ejecutan en los servidores de Google (por lo que tienen ciertas limitaciones).
Activando Google Apps Script
Lo primero que hay que hacer es activar esta funcionalidad y la manera más facil es acceder a tu cuenta de Google Drive y seleccionar New -> more -> connect more apps y en la ventana que aparece teclear script en el cuadro de búsqueda y pulsar en el botón Connect de Google Apps Script
Una vez hecho esto podremos crear un script desde Google Drive simplemente seleccionando New -> Google Apps Script y nos aparecerá el editor de scripts
En este editor podemos introducir nuestro script para lo cual conviene conocer el API de los diferentes servicios de google
Hay que saber que existenten básicamente dos tipos de servicios, los públicos y los privados, los primeros son accesibles facilmente con solo tener una clave de acceso mientras que los segundos requieren de un mecanismo de autorización.
Los scripts que creemos con Google Apps Script se ejecutarán sin problema mientras accedan a servicios anónimos (o no accedan a ningún servicio) pero pedirán autorización en el momento en que intentamos acceder a un servicio privado. En este último caso en cuanto ejecutemos un script de este tipo en una cuenta de usuario nos pedirá autorización a través de unos pasos sencillos.
Creando un script para purgar automáticamente mensajes de Gmail
Volviendo a nuestro problema, una forma de lidiar con él sería poder eliminar periódicamente y de forma automática aquellos mensajes que ya no nos interesan y que están usando espacio innecesariamente. Es decir, necesitamos un código para borrar mensajes que cumplan ciertas condiciones y una forma de ejecutarlo periódicamente.
Para empezar, creemos un script para purgar mensajes de Gmail en base a ciertos criterios de selección, necesitamos consultar la referencia del Servicio Gmail para darnos cuenta que es sencillo a la par que divertido...
Lo primero es seleccionar los mensajes a borrar filtrando por ciertas condiciones, las mismas que puedes usar manualmente en la web de Gmail, condiciones como label: o size: por ejemplo, para buscar los mensajes con tamaño igual o mayor a 1000 bytes:
var threads = GmailApp.search("size:1000");
A nosotros nos va a interesar en este ejemplo filtrar por etiquetas, tamaño y fecha del mensaje, nos gustaría eliminar todos los mensajes anteriores a una fecha pero que tengan cierto tamaño y ciertas etiquetas, para ello definimos unas variables con las condiciones de filtro:
var GMAIL_LABELS = "label1, label2, label3";
var PURGE_SIZE = 0
var PURGE_DATE = "2010-01-01"
En este caso queremos borrar mensajes etiquetados como label1 o label2 o label3 de cualquier tamaño y anteriores al 1 de enero del 2010:
function purgeMail() {
GmailApp.moveThreadsToTrash(
GmailApp.search(GMAIL_LABELS
.split(',')
.map(function (e) {return "label:" + e.trim();})
.join('|') + " size:" + PURGE_SIZE.toString() + " before:" + PURGE_DATE));
}
Ya tenemos el código, ahora solo nos falta una manera de ejecutarlo periódicamente y eso se puede hacer con un trigger temporal, mediante el cual podemos decirle a Google que ejecute nuestro código en ciertos momentos del tiempo, por ejemplo cada día:
ScriptApp.newTrigger("purgeGmail").timeBased().everyDays(1).create();
¡Y eso es todo! Ahora Google ejecutará cada dia nuestro script que purgará los mensajes que cumplan las condiciones que hemos establecido y se hará automáticamente sin ninguna intervención por nuestra parte.
Si en algún momento queremos detener este script y que no purgue mensajes diariamente tan solo tenemos que eliminar el trigger temporal:
ScriptApp.getProjectTriggers().forEach(function(t) {ScriptApp.deleteTrigger(t);});
Este es un código de ejemplo, en realidad hay que optimizarlo un poco para no generar peticiones enormes de mensajes y otras cosas por el estilo pero eso ya lo dejo como ejercicio.
Si estáis interesados en usar esta funcionalidad sin más complicación o en estudiar el código con más detalle, está disponible el código final y completo en github
Comentarios
Publicar un comentario