簡體   English   中英

Gmail 應用程序腳本 - 從 Gmail 標簽而不是 Gmail 收件箱中提取電子郵件內容

[英]Gmail App Script - Extract E-mail Content from Gmail Label Instead of Gmail Inbox

我有一個在線表單,可將​​提交的表單字段數據發送到 Gmail。 我一直在使用下面的腳本將表單字段數據提取到 Google 表格中。 目前,腳本從收件箱中提取。 我想知道是否有辦法調整腳本,使其查看 Gmail 標簽(例如:formsubmissions)而不是收件箱。

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
}        
  • 您想從formsubmissions的標簽中檢索threads ,該標簽是標簽名稱。

如果我的理解是正確的,這個修改怎么樣? 我認為對於您的情況有幾種答案。 因此,請將此視為其中之一。

修改后的腳本:

請修改如下。

從:
 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(); 工作正常。

參考:

如果我誤解了你的問題,我深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM