Сохранить вложения только из новых сообщений - PullRequest
0 голосов
/ 26 августа 2018

Я скопировал несколько кодов, чтобы переместить вложения Gmail на Google Диск, добавить метку к почте, затем удалить или заархивировать почту (я пробовал и корзину, и архив, но результаты совпадают):

  1. Входящие письма приходят от одного и того же отправителя (устройства) каждый раз с одним и тем же субъектом.
  2. Письмо приходит в произвольное время, это может быть несколько писем в минуту или ничего за несколько часов.
  3. Имена файлов имеют суффикс в формате гггг-мм-дд-чч-мм-сс.

Проблема, с которой я сталкиваюсь, заключается в том, что когда скрипт обрабатывает новые электронные письма в папке входящих сообщений, он такжеобрабатывает тех, кто в корзине.Это приводит к дублированию старых файлов.Та же проблема возникает, даже если я изменяю moveToTrash() на moveToArchive().

Как я могу запретить моему сценарию дублировать старые файлы (из ранее обработанных писем)?

function GmailToDrive(){
  //build query to search emails
  var query = '';
  //filename:jpg OR filename:tif OR filename:gif OR fileName:png OR filename:bmp OR filename:jpeg'; //'after:'+formattedDate+
  for(var i in fileTypesToExtract){
    query += (query === '' ?('filename:'+fileTypesToExtract[i]) : (' OR filename:'+fileTypesToExtract[i]));
  }
  query = 'in:inbox has:nouserlabels ' + query;
  var threads = GmailApp.search(query);
  var label = getGmailLabel_(labelName);
  var parentFolder;
  if(threads.length > 0){
    parentFolder = getFolder_(folderName);
  }
  var root = DriveApp.getRootFolder();
  for(var i in threads){
    var mesgs = threads[i].getMessages();
    mesgs.reverse();
    for(var j in mesgs){
      //get attachments
      var attachments = mesgs[j].getAttachments();
      for(var k in attachments){
        var attachment = attachments[k];
        var isDefinedType = checkIfDefinedType_(attachment);
        if(!isDefinedType) continue;
        var attachmentBlob = attachment.copyBlob();
        var file = DriveApp.createFile(attachmentBlob);
        parentFolder.addFile(file);
        root.removeFile(file);
      }
    }
    threads[i].addLabel(label);
    threads[i].moveToTrash();
    threads[i].refresh();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...