Пометить почту как прочитанную с помощью Google App Script - PullRequest
0 голосов
/ 14 января 2020

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

Пусть этот скрипт работает нормально, но нужно реализовать еще одну функцию. Теперь мне нужно это: Письма, прочитанные сценарием, нужно пометить как прочитанные

Я попытался объединить несколько вариантов, но без положительного результата.

Может кто-нибудь помогите мне реализовать это в самом скрипте

function processInboxToSheet() {
  //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();

    // 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);
    }


  }
};

1 Ответ

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

Если я вас правильно понял, вы хотите отметить как прочитанное первое сообщение в каждой из тем. Для этого вы должны использовать markRead () .

Теперь этот метод соответствует классу GmailMessage . Следовательно, вам нужно вызвать этот метод из экземпляра этого класса. Прямо сейчас в вашем коде у вас есть переменная messages, которая представляет собой массив сообщений в потоке, а не сообщение. Чтобы получить доступ к отдельным сообщениям, вы должны указать индекс массива. Первое сообщение в цепочке соответствует message[0], поэтому вам нужно использовать markRead.

Так что единственное, что вам нужно сделать, это добавить следующую строку кода в любом месте внутри for l oop и после того, как вы определили messages:

messages[0].markRead();

(Если вы хотите пометить сообщение только как прочитанное, если в сообщении есть текст сообщения, вам нужно добавить строку выше внутри блок if.)

Кроме того, если вы хотите пометить поток как прочитанный (GmailThread также имеет метод markRead , вы можете использовать эту строку кода в начале for l oop:

threads[i].markRead();

Я надеюсь, что это поможет.

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