Переносить оригинальные сообщения Gmail только на листы Google, а не в ответы. - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующий скрипт, который ищет в моем gmail определенный запрос, а затем импортирует его на листы Google. Кажется, что это работает, но также импортирует ответы на исходное письмо, которое я не хочу включать. Могу ли я изменить свой сценарий так, чтобы он отображал только исходное электронное письмо, а не ответы, добавленные другими? Большое спасибо.

var SEARCH_QUERY = "newer_than:1d from:contactcentrequeries AND subject:feedback";

/*
 Credit: Alexander Ivanov
 https://gist.github.com/contributorpw/70e04a67f1f5fd96a708
*/

function getEmails_(q) {
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) {
             emails.push([msgs[j].getBody().replace(/<.+?>/g, '\n')
                .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
            ]);
        }
    }
    return emails;
}

function appendData_(sheet, array2d) {
    sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function saveEmails() {
    var array2d = getEmails_(SEARCH_QUERY);
    if (array2d) {
        appendData_(SpreadsheetApp.getActiveSheet(), array2d);
    }
}

1 Ответ

0 голосов
/ 26 февраля 2020

Согласно предоставленному вами коду, похоже, что проблема связана с тем, как вы вызываете переменную msgs. Точнее, строка кода threads[i].getMessages(); извлечет всех сообщений для thread i. Если вы хотите получить только первое сообщение темы - которое по сути является исходным электронным письмом, вам следует просто использовать msgs[0] вместо другого for l oop.

Поэтому ваш код должен выглядеть примерно так:

for (var i in threads) {
  var msgs = threads[i].getMessages();
  emails.push([
    msgs[0]
      .getBody()
      .replace(/<.+?>/g, "\n")
      .replace(/^\s*\n/gm, "")
      .replace(/^\s*/gm, "")
      .replace(/\s*\n/gm, "\n")
  ]);
}

Ссылка

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