Проверка объекта на ключ более эффективна, чем поиск строки в массиве?

уСвидание а такжеТема от конкретных новых писем до новой строки Google Sheet.

Я применяю ярлык для новых почтовых отправлений с фильтром.скрипт обрабатывает эти помеченные письмаярлык снятПрименяется новый ярлык, чтобы эти письма не обрабатывались в следующий раз.

проблема: Когда естьMyLabel электронная почта, скрипт обрабатывает все электронные письма в одной и той же ветке (например, с одной и той же темой и отправителем) независимо от их метки (даже папки «Входящие» и «Корзина»).

Вопрос: Как обрабатывать только новые письма, т. Е. С ярлыкомMyLabel - даже когда поток этих сообщений выходит за пределыMyLabel папка?

Мой текущий скрипт:

function fetchmaildata() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('mySheetName');

  var label = GmailApp.getUserLabelByName('myLabel');
  var threads = label.getThreads();

  for (var i = 0; i < threads.length; i++)
  {
    var messages = threads[i].getMessages();

    for (var j = 0; j < messages.length; j++)
    {     
      var sub = messages[j].getSubject();
      var dat = messages[j].getDate();

      ss.appendRow([dat, sub])
    }
    threads[i].removeLabel(label);
    threads[i].addLabel(newlabel);
  }
}

Я взломал решение для своих целей, изменив мойfor цикл к этому:

for (var j = messages.length-1; j > messages.length-2; j--)

Это говорит о том, что нужно обрабатывать только последнюю электронную почту в ветке, даже если вMyLabel папка. Как ни странно, скрипт все еще меняетЭтикетки из всехMyLabel сообщения электронной почты, но только последний из потока получаетнаписано в электронную таблицу, так что это работает для меня.

Мне пришлось внести еще одно изменение в код, потому что приведенный выше код не запускается как запланированная задача, запускаемая по времени. Я изменил код таким образом, и теперь он работает по расписанию!

//var ss = SpreadsheetApp.getActiveSpreadsheet();  
var ss = SpreadsheetApp.openById("myGoogleSheetID");

Ответы на вопрос(1)

Ваш ответ на вопрос