Gmail App Script - извлечение содержимого электронной почты из ярлыка Gmail вместо почтового ящика Gmail - PullRequest
0 голосов
/ 31 января 2019

У меня есть онлайн-форма, которая отправляет отправленные данные поля формы в Gmail.Я использовал приведенный ниже скрипт для извлечения данных поля формы в Google Sheet.В настоящее время скрипт извлекает из папки «Входящие».Мне интересно, есть ли способ настроить сценарий так, чтобы он смотрел на ярлык Gmail (например, Formubmissions) вместо папки «Входящие».

function parseEmailMessages(start) {

  start = start || 0;

  var threads = GmailApp.getInboxThreads(start, 100);
  var sheet = SpreadsheetApp.getActiveSheet();

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

    // Get the first email message of a threads
    var tmp,
      message = threads[i].getMessages()[0],
      subject = message.getSubject(),
      content = message.getPlainBody();

    // Get the plain text body of the email message
    // You may also use getRawContent() for parsing HTML

    // Implement Parsing rules using regular expressions
    if (content) {

      tmp = content.match(/First:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var first = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Last:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var last = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Title:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var title = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Organization:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var organization = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/City:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var city = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/State:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var state = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Country:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var country = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/E-mail:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@_.\-]+)/);
      var email = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/BLANK:\s*([\s\S]+)/);
      var blank = (tmp && tmp[1]) ? tmp[1] : 'BLANK';

      sheet.appendRow([first, last, title, organization, city, state, country, email]);

    } // End if

  } // End for loop
}        

1 Ответ

0 голосов
/ 31 января 2019
  • Вы хотите получить threads из метки formsubmissions, которая является названием метки.

Если мое понимание верно, как насчет этой модификации?Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, воспринимайте это как один из них.

Модифицированный скрипт:

Пожалуйста, измените его следующим образом.

С:
var threads = GmailApp.getInboxThreads(start, 100);
Кому:
var labelName = "formsubmissions"; // Please set the label name
var labels = GmailApp.getUserLabels();
var threads = [];
for (var i = 0; i < labels.length; i++) {
  if (labels[i].getName() == labelName) {
    threads = labels[i].getThreads();
    break;
  }
}

Примечание:

  • Этот модифицированный скрипт предполагает, что скрипт ниже var sheet = SpreadsheetApp.getActiveSheet(); работает нормально.

Ссылки:

Если я неправильно понял ваш вопрос, прошу прощения.

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