Script de Google Apps: etiquetar correo electrónico según el cuerpo del correo electrónico [Optimizar código]

Tengo el objetivo de hacer lo siguiente:

e recibe un correo electrónico que coincide con los criterios que se colocarán en la carpeta de la Etiqueta A. Se recibe un nuevo correo electrónico. El cuerpo de este nuevo correo electrónico es un duplicado del primero recibido.ste nuevo correo electrónico omite la bandeja de entrada y va a la carpeta Etiqueta B.

Así es como lo implementé:

Todos los correos electrónicos nuevos están etiquetados como "Original"Cuando se ejecuta el script, compara el cuerpo del correo electrónico con todos los anteriores. Si el cuerpo es un duplicado, se etiqueta "Duplicar", se mueve a "Archivo" y se elimina la etiqueta "Original".

El código es el siguiente:

function emailLabeling() {


var DUPLICATE = _getLabel();
  var labels = GmailApp.getUserLabelByName("Original");
  if(labels != null){
    var threads = labels.getThreads();
    for (var i = 0; i < threads.length; i++){
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++){
        var message = messages[j];
        for (var k = i; k < threads.length; k++){
        var messages_check = threads[k].getMessages();
          for (var l = j; l < messages_check.length; l++){
            var message_check = messages_check[l];
            if(message_check.getPlainBody() == message.getPlainBody()){
              if(i !=  k || j != l){
                Logger.log(i +""+ j +""+ k +""+ l);
                DUPLICATE.addToThread(threads[i]);
                labels.removeFromThread(threads[i]);
                GmailApp.moveThreadToArchive(threads[i]);
              }
            }
          }
        }
      }
    }
  }
  else{
    Logger.log("Label Not Found!");
  }
}

function _getLabel() {
  var label_text = "Duplicates";
  var label = GmailApp.getUserLabelByName(label_text);
  if (label == null) {
    var label = GmailApp.createLabel(label_text);
  }
  return label;
}

El código funciona bien. El problema radica en 4 bucles anidados, que aumenta exponencialmente el tiempo de ejecución a medida que aumenta el número de correos electrónicos "originales".

¿Hay alguna forma de optimizar este código? Existe una lógica más inteligente para implementar esta idea?

Cualquier ayuda sería apreciada

Respuestas a la pregunta(1)

Su respuesta a la pregunta