¿Te gustaría eliminar los correos antiguos de Gmail automáticamente? Con este script podrás hacerlo sin problemas. Basta con asignarles una etiqueta y definir el número de días que deben transcurrir para ser eliminados.
La Papelera y la carpeta de Spam en Gmail tienen un sistema de borrado que elimina los correos electrónicos luego de pasado cierto tiempo (30 días). Pero hay casos, muchos casos, en que esto no es suficiente.
Por ejemplo, si creamos una regla en Gmail que archive todas nuestras suscripciones a newsletters con una etiqueta en particular, estos mensajes serán automáticamente borrados luego de que transcurra cierto número de días. ¡Ya no tenemos que hacerlo manualmente!
Cómo eliminar los correos de Gmail automáticamente
Por defecto, no se nos permite activar una función para eliminar los correos electrónicos automáticamente; sin embargo, para cumplir este propósito hay un sencillo Script de Google que agrega esta funcionalidad a nuestra cuenta Gmail. El script básicamente monitorea los correos bajo cierta etiqueta (carpeta) y borra aquellos que excedan el tiempo que hemos definido previamente.
Ahora veamos el paso a paso, para ejecutar el script.
- Abrir el Script de Google y pulsar en Archivo -> Crear una copia para copiarlo a nuestra cuenta de Google Drive.
- Definir el valor de GMAIL_LABEL con el nombre de la etiqueta que deseamos asignar a los correos que se borrarán automáticamente.
- Definir el valor de PURGE_AFTER con el número de días que deben transcurrir para eliminar el correo en Gmail.
- Ir a Ejecutar -> Initialize y autorizar el script.
- Ir a Ejecutar -> Install para instalar el script.
¡Eso es todo! Salimos de Google Script y este continuamente monitoreará la etiqueta Gmail asignada automáticamente y en background. Si necesitas desactivar esta nueva funcionalidad, puedes hacerlo en cualquier momento. Simplemente debes Abrir el mismo Script de Google en tu cuenta de Google Drive y seleccionas Ejecutar -> Uninstall.
Me parece que esta es una buena solución ante la falta de la funcionalidad. Sin embargo, sería bueno que Gmail ofrezca esta característica en uno de sus Labs. ¿Què piensas? ¿Crees que es una funcionalidad útil?
Me parece muy útil. Sin embargo, al ejecutarse el script recibía la siguiente notificación "Exceeded maximum execution time", al parecer por la cantidad de mensajes y duración que tomaba al hacer el ciclo 'for' para recorrer los mensajes .
Cambie un poco el código y pase a usar la función GmailApp.moveThreadsToTrash, con esto no es necesario el for y parece que ahora sí me funciona (aunque aún lo estoy monitoreando!)
Afaros, ¿podrías compartir tu código para usarlo también?
A mí también me aparece el error de "Exceeded maximum execution time" y me gustaría probarlo...
Hola Alfonsito,
Basicamente cambie la definición de las variables GMAIL_LABEL y PURGE_AFTER pues deseaba que el mismo script me borrara en diferentes labels, además luego me intereso que pasara un número distinto de días antes de borrar en cada uno de los labels de ahí que convertí estas variables en arreglos (de igual forma es posible colocar solo un elemento en el arreglo)
Además, cambie la función purgeGmail. Todo lo demás lo deje exactamente igual.
A mi me esta funcionando a la perfección, espero te sirva. Acá el código modificado, lo demás del código original se mantiene:
//var GMAIL_LABEL = "reportes-monitoreo-nacion";
var MIS_ETIQUETAS = new Array("label1", "label2", "label3");
// Número de días que deben pasar para que un mensaje sea purgado
var PURGE_AFTER = new Array("60", "30", "1"); // debe terner el mismo número de elementos que 'MIS_ETIQUETAS'
//var PURGE_AFTER = "2";
function purgeGmail() {
for(var c=0;c < MIS_ETIQUETAS.length; c++){
var age = new Date();
age.setDate(age.getDate() - PURGE_AFTER[c]);
var purge = Utilities.formatDate(age, Session.getTimeZone(), "yyyy-MM-dd");
//var search = "label:" + GMAIL_LABEL + " before:" + purge;
var search = "label:" + MIS_ETIQUETAS[c] + " before:" + purge;
try {
var threads = GmailApp.search(search, 0, 100);
var cantidad_threads = threads.length;
GmailApp.moveThreadsToTrash(threads);
if (cantidad_threads == 100) {
ScriptApp.newTrigger("purgeGmail")
.timeBased()
.at(new Date((new Date()).getTime() + 1000*60*10))
.create();
}
} catch (e) {}
}
}
saludos