Filtros avanzados de gmail que no podrás vivir sin ellos

Estamos apuntados a decenas de suscripciones, a boletines que a veces nos interesa algún correo, y todo esto hace que se nos acumulen tantos correos que no es suficiente con los filtros avanzados de Gmail. Aunque apliquemos etiquetas a los correos recibidos y luego borremos aquellos que no nos interesen, si tenemos muchos correos llega un momento que esto no es manejable. Gmail ha añadido hace poco las pestañas (que son etiquetas) en la pantalla de la bandeja de entrada, supongo que para mejorar todo el correo que nos llega a nuestras bandejas. Con el filtrado que vamos a ver a continuación, querás desterrar para siempre esta visualización y te enamorarás de la visualización con Priority Inbox.

Una característica que es muy útil del correo de Apple, es que permite crear un filtro basado en el tiempo, permitiendo generar una regla con aquellos mensajes más antiguos que x días. Si esto lo permitiese Gmail, podríamos ver de un vistazo los correos que quisierámos, y el resto se borraría automáticamente. Esto es lo que vamos a ver en este artículo, pero claro los filtros que tiene Gmail solo se aplican a los mensajes que lleguen, por lo que todo lo que he dicho con este tipo de filtros no se cumpliría nunca. Podríamos hacerlo aplicando un filtro a los que lleguen y luego volver a aplicar otro, pero esto no eliminaría la automatización del proceso.

Afortunadamente tienes una opción muy interesante para hacer esto que te he propuesto, y es a través de Google Apps Script. Básicamente creas pequeños scripts (programitas) que basandose en la fecha del correo, moverán, marcarán o aplicarán una etiqueta a tus mensajes sin necesidad de abrir Gmail o tu cliente de correo, como puede ser Thunderbird.

Google Apps Script. Espera … Qué?

Eso mismo dije yo cuando lo descubrí, pero básicamente es una plataforma que tiene Google para programar con javascript y eventos con sus aplicaciones en la nube con Gmail, Drive, Mapas, Calendario … No te preocupes si no tienes ni papa de programar, porque no va a ser necesario, solo te lo explico para que sepas de que va todo este tinglado. Luego verás como tardas menos en copiar el código que en leerlo.

Puedes más adelante intentar realizar tus primeros pinitos programando, ya que la documentación para Google Apps Script es muy completa. Además las funciones que puedes utilizar son realmente útiles (y realmente potentes). Y por último pero no menos importante, es fácil si se te da bien la programación.

Puedes encontrar toda la documentación para Google Apps Script en: developers.google.com/apps-script/

Vale, parece chulo Google Apps Scripts, pero ¿Cómo lo uso?

Para utilizar Google Apps Scripts no tienes que hacer nada del otro mundo, por supuesto tener una cuenta de Gmail, que si estás leyendo esto la tendrás, y luego acceder a script.google.com. Te aparecerá una página donde tendrás que escoger Proyecto en blanco. Una vez que tengas el código que está más abajo, copia y pega, y ejecútalo en el símbolo del play. Google te preguntará tu aprobación antes de que puedas ejecutarlo, y que el script tenga permisos para interactuar con Gmail (esto es una medida de seguridad de Google).

Nuevo proyecto en Google Apps Script

Nuevo proyecto en Google Apps Script

Vamos a ver a continuación un script que borrará todos los mensajes con la etiqueta "Borrarme" más antiguos de 2 días. Recuerda que la etiqueta la puedes cambiar a tu gusto, yo tengo 2 una de Newsletters y otra de Novedades, lo que he hecho ha sido duplicar el script. Recuerda crear un filtro que aplique la etiqueta Borrarme a todos aquellos mensajes que quieras, y por supuesto no te olvides de crear la etiqueta Borrarme.

function cleanUp() {
  var delayDays = 2 // Introduce el número de días para que los mensajes se envíen a la papelera
  var maxDate = new Date();
  maxDate.setDate(maxDate.getDate()-delayDays);
  var label = GmailApp.getUserLabelByName("Borrarme");
  if( label ) {
    var threads = label.getThreads();
    for (var i = 0; i < threads.length; i++) {
      if (threads[i].getLastMessageDate()<maxDate)
        {
          threads[i].moveToTrash();
        }
      }
    }
  }

Una vez que veas como funciona y estés conforme, puedes ejecutarlo periódicamente (por ejemplo, cada 5 minutos) seleccionando un timer (temporizador) del menú Recursos > Current project's triggers, y ahí seleccionarás la función que hemos definido (aparecerán todas las que añadas), selecciona el tiempo y ya tendrás listo el script de Google Apps.

Si alguno de los mensajes que has recibido quieres guardarlo, solo tienes que quitarle la etiqueta Borrarme.

Exprime cientos de mensajes en Gmail con estos scripts

También podemos Archivar mensajes pasado un tiempo, simplemente utilizando el filtrado de Gmail. Vamos a ver una función para archivar mensajes:

function archiveInbox() {
// Every thread in your Inbox that is read, older than two days, and not labeled "delete me".
var threads = GmailApp.search('"label:inbox is:read older_than:2d -label:"Borrarme"');
  for (var i = 0; i < threads.length; i++) {
    threads[i].moveToArchive();
}
}

Comprobarás que con solo cambiar la línea label:inbox is:read older_than:2d -label:"delete me", podrás crear filtros avanzados muy complejos. Y si en vez de archivarlos, quieres borrarlos, sustituye threads[i].moveToArchive(); con threads[i].moveToTrash();.

Y en el caso de que tengas muchos correos a procesar (más de 100), puedes tener problema a la hora de ejecutar estos scripts. Lo que hacemos en estos casos es ejecutar el script cada 100 mensajes para que aparezcan problemas. El script quedaría así:

function batchDeleteA() {
  var batchSize = 100 // Process up to 100 threads at once
  var threads = GmailApp.search('label:"Borrarme" older_than:2d');
  for (j = 0; j < threads.length; j+=batchSize) {
    GmailApp.moveThreadsToTrash(threads.slice(j, j+batchSize));
  }
}

function batchDeleteB() {
  var mySearch = "'label:\"Borrarme\" older_than:2d'"
  var batchSize = 100 // Process up to 100 threads at once
  while (GmailApp.search(mySearch, 0, 1).length == 1)
  {
    GmailApp.moveThreadsToTrash(GmailApp.search(mySearch, 0, batchSize));
  } 
}

Con estos scripts tendrás siempre tu bandeja de entrada de Gmail, limpia y reluciente, pudiendo recibir cientos de correos al día y no enterarte.

Espero tus comentarios y háblame de tu experiencia.

Luis Miguel Delgado Encinas

Artesano de bits, Bloguero, combino Amazon con Chorizos, Emprendiendo en conocimiento, Pasión por ecommerce y me encanta Ubuntu. Soy un culo inquieto que desarrolla soluciones tecnológicas aplicando distintos enfoques y puntos de vista. Cada día está lleno de oportunidades.