Прочитать все сообщения в ярлыке Gmail с помощью скрипта Google App - PullRequest
0 голосов
/ 15 января 2020

Я большой любитель в Google App Script.

Спас этот скрипт, который работает для меня, но не правильно. Теперь только чтение и phsarse информация для первого сообщения потока, а не все сообщения.

Мне нужно прочитать, проверить и развести все сообщения метки, а не только первую ветку. Мне нужно, чтобы скрипт прочитал и разобрал все отдельные сообщения, расположенные на теге. Затем помечает все как прочитанное.

Кто-то может мне помочь и изменить код, чтобы сделать это? Я просматриваю руководство по Google APP Script и пробовал разные вещи, но не могу заставить его работать.

Спасибо!

  //var threads = GmailApp.getInboxThreads();
  // Have to get data separate to avoid google app script limit!
  var start = 0;
  var threads = GmailApp.search("newer_than:1d AND is:unread AND label:eur OR label:desc",0,100); 
  var sheet = SpreadsheetApp.getActiveSheet();
  var result = [];

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

    var content = messages[0].getPlainBody();
    messages[0].markRead();
    // implement your own parsing rule inside
    if (content) {
      var tmp;
      tmp = content.match(/\b([A-B\d][A-B\d]{4})\b/);
      var cod = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      tmp = content.match(/\b(\d+[R])/);
      var prom = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      tmp = content.match(/\b(\d{2}\.\d{2}\)\b/);
      var exp = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      sheet.appendRow([cod, prom, exp]);

      Utilities.sleep(500);
    }


  }
}; ```

Ответы [ 2 ]

1 голос
/ 15 января 2020

Для того, чтобы пометить сообщения как прочитанные, вы должны повторять сообщения каждого потока.

Вы получаете только первое сообщение в цепочке, поэтому вам нужно заменить

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

  var content = messages[0].getPlainBody();
  messages[0].markRead();

  .....

на что-то вроде этого:

function readMails (){

  var threads = GmailApp.search("newer_than:1d AND is:unread AND label:eur OR label:desc",0,100);

  //Iterate threads
  for (var i=0; i < threads.length; i++){

    var messages = threads[i].getMessages();

    //Iterate messages of each thread
    for (var k=0; k < messages.length; k++){
      var content = messages[k].getPlainBody();
      messages[k].markRead();

      .....
    }
  }
}
0 голосов
/ 15 января 2020

Поскольку у вас уже есть список потоков, вы можете использовать метод markThreadsRead, чтобы пометить их все как прочитанные go.

var threads = GmailApp.search("newer_than:1d AND is:unread AND label:eur OR label:desc",0,100); 
GmailApp.markThreadsRead(threads);

В качестве альтернативы, вы можете обрабатывать отдельные сообщения в потоке как показано ниже:

var messages = threads[i].getMessages();
messages.forEach(function(message) {
  message.markRead();
  // processs the message here and save to sheets
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...