Как я могу скачать свою электронную почту по GoggleScript - PullRequest
1 голос
/ 02 июля 2019

Я должен загрузить много писем (около 1000 штук) из моей GMail-учетной записи в наш файл-файл и иметь доступ только для браузера.

Вот мой стартовый скрипт:

function myeMailExportToEML() {
  var threads = GmailApp.search('Label:TestExportEML');  
  GmailApp.markThreadsRead(threads);
  
  for (var i=0; i< threads.length; i++) {
    var myID = threads[i].getId();
    var mySubject = GmailApp.getMessageById(myID).getSubject();

    ??????????????????
    ??????????????????
    ??????????????????
  }
}

У кого-нибудь есть чаевые для меня?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Я нашел решение:

function myExportToGoogleDrive1() {
  var threads = GmailApp.search("label:TestExportEML");  
  GmailApp.markThreadsRead(threads);
  Logger.log(threads)
  var messagesArray = []     
  
  var newFolder = DriveApp.createFolder("dddddddddddddddddddddd").getId();

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

      for (var j=0; j< messages.length; j++) {

        var myID = messages[j].getId();
        var msg = GmailApp.getMessageById(myID);
        var msgRaw = msg.getRawContent();

        var msgBlob = Utilities.newBlob(msgRaw, 'message/rfc822', 'example.eml');
        
        var ssss = DriveApp.getFolderById(newFolder).createFile(msgBlob);
        var filename = GmailApp.getMessageById(myID).getSubject();
        
        ssss.setName(filename);
      }
  }
}

Спасибо за вашу помощь.

Привет

0 голосов
/ 03 июля 2019

Чтобы отправить ваши электронные письма, вы сначала должны получить каждое из них и преобразовать его в объект BLOB с типом содержимого «message / rfc822» (который является типом mime для файлов .eml) [1]:

В вашем коде вы получаете первое сообщение каждого потока, потому что идентификатор потока совпадает с идентификатором сообщения первого сообщения в этом потоке, но если у потока есть больше сообщений (например, ответов), он не найдетих.Вам нужно использовать функцию getMessages () [2] для каждого потока, чтобы получить все сообщения.

После получения объекта Message вы можете использовать функцию getRawContent [3] для каждого сообщения, чтобы получить строку закодированных данных.С помощью этой строки мы можем создать объект Blob [4], который будет являться файлом .eml.

Я не могу сказать, какой у вас доступ со стороны файлового сервера, поэтому яразработали эти два различных способа решения вашей проблемы для загрузки / отправки файлов .eml в зависимости от того, что вам удобнее:

Чтобы проверить, правильно ли создан файл BLOB-объекта .eml, я отправляю его себе каквложение с использованием функции sendEmail [5].

Другой способ - сохранить все файлы в массиве (messagesArray) и получить URL-адрес вашего сервера для отправки массива через POST.В этом случае используется функция UrlFetchApp.fetch () [6].

Вот полный код с обеими опциями:

function myeMailExportToEML() {

  var threads = GmailApp.search('label:TestExportEML’);  
  GmailApp.markThreadsRead(threads);
  Logger.log(threads)
  var messagesArray = []     

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

      for (var j=0; j< messages.length; j++) {

        var myID = messages[j].getId();
        var msg = GmailApp.getMessageById(myID);
        var msgRaw = msg.getRawContent();

        var msgBlob = Utilities.newBlob(msgRaw, 'message/rfc822', 'example.eml');

        //Sends email with the .eml file attached
        GmailApp.sendEmail('RECIPIENT EMAIL', 'Attachment example', 'Please see the attached file.', {
          attachments: msgBlob,
          name: 'Automatic Emailer Script'
        })   

    messagesArray.push(msgBlob);                          
      }
  }

    //make a post request to the server sending the .eml file in the request body(I didn't test this part)
   var formData = {
          'mail': messagesArray
   };
   var options = {
          'method' : 'post',
          'payload' : formData
        };
   UrlFetchApp.fetch('https://example.com/post', options);    
}

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types

[2] https://developers.google.com/apps-script/reference/gmail/gmail-thread#getMessages()

[3] https://developers.google.com/apps-script/reference/gmail/gmail-message#getRawContent()

[4] https://developers.google.com/apps-script/reference/utilities/utilities#newBlob(String,String,String)

[5] https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)

[6] https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...