Отправить вложение Gmail в GDrive - PullRequest
0 голосов
/ 14 июля 2020

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

В чем проблема?

function GmailToDrive(){

  //Création d'une requête de recherche de mails
  query = 'is:unread subject:alarm -in:trash'
  //query = 'label:gmailtodrive subject:UnSujet newer_than:1D'
  Logger.log('Recherche des messages avec le filtre ' + query); 
  var objGmailThreadArray = GmailApp.search(query); //Recherche des messages basée sur le filtre. Cela retourne un tableau
  var label = getGmailLabel_(labelName); //Pointe ou crée un label nommé labelName
  
  if(objGmailThreadArray.length > 0){ //Si la recherche de mails à donné un résultat, on point ou on crée le répertoire cible
    Logger.log('Il y a  ' + objGmailThreadArray.length + ' résultats'); 
    var objGdriveRootFolder = DriveApp.getRootFolder(); //On pointe sur le répertoire racine de Gdrive
    var folderRacineImages = CreationRepertoire_(objGdriveRootFolder, folderName); //On pointe sur la racine du répertoire qui contient les images
    var objRepertoireCible = CreationRepertoire_(folderRacineImages, now.toString()); //On pointe sur la racine du répertoire qui contient les images
  }
  var objGdriveRootFolder = DriveApp.getRootFolder(); //On pointe sur le répertoire racine de Gdrive
  for(var UnMail in objGmailThreadArray){
    var mesgs = objGmailThreadArray[UnMail].getMessages();
    for(var j in mesgs){
      //get attachments
      var attachments = mesgs[j].getAttachments();
      for(var k in attachments){
        Logger.log('attachement :  ' + k); 
        var attachment = attachments[k];
        var isDefinedType = checkIfDefinedType_(attachment);
        if(!isDefinedType) continue;
        var attachmentBlob = attachment.copyBlob();
        var file = DriveApp.createFile(attachmentBlob); //On récupère le fichier contenu dans le mail et on le stocke à la racine de Gdrive. La fonction ne donne pas le choix de la cible
        objRepertoireCible.addFile(file); //On copie ce même fichier sur le répertoire cible voulu
        objGdriveRootFolder.removeFile(file); //On efface le fichier qui a été créé à la racine
      }
      mesgs[j].markRead(); //marqué comme lu
      mesgs[j].moveToTrash(); //Move message to trash
      
    }
    objGmailThreadArray[UnMail].addLabel(label);
  }
}
...