2026-09-20 · 2 min de lectura

Eliminar automáticamente los correos antiguos de Gmail para recuperar una sincronización rápida

Una cuenta de Gmail activa durante años puede contener fácilmente más de 500.000 mensajes. Ese volumen es lo que vuelve tan lentos a Thunderbird, Outlook o los clientes móviles: cada cliente debe indexar y sincronizar todo el buzón, lo que consume ancho de banda, memoria y batería. Borrar los mensajes a mano, día tras día, es lento y propenso a errores.

Por qué un buzón enorme bloquea los clientes de correo

Los clientes de escritorio y móviles guardan una copia local del buzón. Cuantos más hilos existen, más tarda la primera sincronización, más crece la base de datos local y más a menudo se corta la conexión. Gmail sigue siendo ágil, pero los clientes IMAP no. La solución práctica es conservar solo el correo reciente, por ejemplo los últimos 90 días, y eliminar todo lo anterior.

Un script de limpieza por lotes en Google Apps Script

Google Apps Script puede hacer la limpieza por ti, de forma gratuita. Abre script.google.com, crea un proyecto nuevo y pega el código de abajo. Edita el array domains y añade tus direcciones o dominios, porque solo se tocará el correo de esos remitentes. El script busca los hilos con más de 90 días, los mueve a la papelera en lotes pequeños y se detiene antes de alcanzar el límite de ejecución de seis minutos. Cada hilo sigue siendo recuperable en la papelera durante 30 días.

JS
function deleteNewsletters3MonthsPermanent() {
  var domains = [
    "site1.com", "user@site2.com",
  ];

  var batchSize = 25;
  var totalDeleted = 0;
  var startTime = new Date().getTime();
  var maxExecutionTimeMs = 5 * 60 * 1000; // 5 minutes safety threshold

  for (var b = 0; b < domains.length; b += batchSize) {
    if (new Date().getTime() - startTime > maxExecutionTimeMs) {
      Logger.log("Execution limit approaching. Stopped safely. Permanently deleted so far: " + totalDeleted);
      return;
    }

    var chunk = domains.slice(b, b + batchSize);
    var fromFilters = chunk.map(function(d) {
      return d.indexOf('@') > -1 ? 'from:' + d : 'from:*@' + d;
    }).join(' OR ');

    var searchQuery = '(' + fromFilters + ') older_than:90d';
    var pageToken = null;

    do {
      if (new Date().getTime() - startTime > maxExecutionTimeMs) {
        Logger.log("Execution limit approaching inside pagination. Permanently deleted so far: " + totalDeleted);
        return;
      }

      // Max results allowed per list request by the API is 500
      var response = Gmail.Users.Messages.list('me', {
        q: searchQuery,
        maxResults: 500,
        pageToken: pageToken
      });

      if (response.messages && response.messages.length > 0) {
        var messageIds = response.messages.map(function(m) { return m.id; });
        
        // Permanent bulk delete: 50 quota units for up to 1,000 IDs
        Gmail.Users.Messages.batchDelete({ ids: messageIds }, 'me');
        totalDeleted += messageIds.length;
        
        // Small delay to keep rate pacing clean
        Utilities.sleep(600);
      }

      pageToken = response.nextPageToken;
    } while (pageToken);
  }

  Logger.log("Finished. Total messages permanently deleted: " + totalDeleted);
}

Consejos adicionales y copia de seguridad

Antes de ejecutar nada, exporta tu buzón con Google Takeout para conservar una copia local. Prueba el script con una consulta restrictiva y luego amplíala. En Thunderbird, cancela la suscripción a la carpeta Todos los mensajes y limita la sincronización IMAP a los encabezados o a los últimos días, ya que ambos cambios reducen el retraso de inmediato.

Trabajemos juntos

¿Necesitas más información, ayuda con tu proyecto o desarrollar una idea?

Ya sea una pregunta sencilla, una duda rápida o una charla de 5 minutos, envíame un mensaje—no cuesta nada y siempre estoy listo para ayudar. Me gusta escuchar para entender el problema, ser creativo en las soluciones y centrarme en ideas simples, confiables y fáciles de implementar rápidamente.

Contáctame →

Cambiar Tema

Elige un tema especializado para explorar: