Как сохранить текст почтового тела в Google Docs - PullRequest
0 голосов
/ 08 сентября 2018

Я пишу небольшой скрипт в Google.Scripts, чтобы найти конкретный почтовый адрес в моей учетной записи Gmail и скопировать тело в google.docs. Кажется, что он отлично работает при поиске электронных писем и чтении содержимого тела, как я вижу по следам казни.

Он также создает документ или открывает его, если он не существует. Однако, когда я проверяю документ, он пуст. Я здесь потерян, так как мне кажется, что я правильно использую документооборот. Вот код сценария:

/**
 * Creates a Google Doc and copy the texts of mails in it.
 * Mails will be retrieved by sender. This script is intended
 * as a way to get information from newsletters in a single document
 */
function getMailsToDoc() {
  // Create a new Google Doc named 'MyMailsText'
  var doc = DocumentApp.create('MyMailsText');

  // Get the email address of the active user - that's you.
  var email = Session.getActiveUser().getEmail();

  var threads = GmailApp.search('from:NewsLetterMail', 0, 20);
  Logger.log("Messages unread in inbox: " + GmailApp.getInboxUnreadCount());
  var messages = threads[0].getMessages();
  var senderEmail = 'admin@newsletter.com';
  for (var i = 0; i < threads.length; i++) {
        messages = threads[i].getMessages()
        Logger.log(messages[0].getPlainBody());

        // Get all possible mails in the thread and copy their bodies to 
        for (var j = 0; j < messages.length; j++) {
          if(senderEmail == messages[j].getFrom()){
            Logger.log(messages[0].getFrom());
            doc.getBody().appendParagraph(messages[j].getPlainBody());
          }
        }
  }
  doc.saveAndClose();

}

А вот пример следов:

[18-09-08 06:07:56:535 PDT] Iniciando ejecución
[18-09-08 06:07:57:592 PDT] DocumentApp.create([MyMailsText]) [1,051 segundos]
[18-09-08 06:07:57:593 PDT] Session.getActiveUser() [0 segundos]
[18-09-08 06:07:57:593 PDT] User.getEmail() [0 segundos]
[18-09-08 06:07:58:109 PDT] GmailApp.search([from:NewsLetterMail, 0, 20]) [0,514 segundos]
[18-09-08 06:07:58:212 PDT] GmailApp.getInboxUnreadCount() [0,102 segundos]
[18-09-08 06:07:58:213 PDT] Logger.log([Messages unread in inbox: 265, []]) [0 segundos]
[18-09-08 06:07:58:334 PDT] GmailThread.getMessages() [0,12 segundos]
[18-09-08 06:07:58:335 PDT] GmailThread.getMessages() [0 segundos]
[18-09-08 06:07:58:443 PDT] GmailMessage.getPlainBody() [0,107 segundos]
**[18-09-08 06:07:58:444 PDT] Logger.log([News and information related to different topics, blablablabla, []]...) [0 segundos]**
[18-09-08 06:07:58:444 PDT] GmailMessage.getFrom() [0 segundos]
[18-09-08 06:07:58:839 PDT] GmailThread.getMessages() [0,395 segundos]
[18-09-08 06:07:58:934 PDT] GmailMessage.getPlainBody() [0,094 segundos]
**[18-09-08 06:07:58:934 PDT] Logger.log([More interesting news from this interesting newsletter blablabla , []]...) [0 segundos]**

Не могли бы вы дать мне подсказку о том, что я делаю не так, или подсказать, как выяснить, почему документ Google пуст? Буду признателен за любую помощь. Большое спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Решение на основе комментария

Как указывал комментатор tehhowch, условие if всегда было ложным. Это вызвано неправильной строкой senderEmail для сравнения с messages[j].getFrom().

Изменение его следующим образом заставляет его работать:

var senderEmail = 'NewsLetterMail <admin@newsletter.com>';
...