Extract info from email body with Google Scripts

淺唱寂寞╮ 提交于 2019-12-05 19:43:27

Thanks folks.. This did the trick:

// Adapted from https://gist.github.com/Ferrari/9678772
function processInboxToSheet() {

  // Have to get data separate to avoid google app script limit!

  var start = 0;
  var label = GmailApp.getUserLabelByName("yourLabelName");
  var threads = label.getThreads();

  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(/Name and Surname:\n([A-Za-z0-9\s]+)(\r?\n)/);
      var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';

      tmp = content.match(/Phone Number:\n([\s\S]+)/);
      var phone = (tmp && tmp[1]) ? tmp[1] : 'No phone';

      tmp = content.match(/Email Address:\n([A-Za-z0-9@.]+)/);
      var email = (tmp && tmp[1]) ? tmp[1].trim() : 'No email';

      tmp = content.match(/Prefered contact office:\n([\s\S]+)/);
      var comment = (tmp && tmp[1]) ? tmp[1] : 'No office';



      sheet.appendRow([username, phone, email, comment]);

      Utilities.sleep(500);
    }
  }
};
var threads = GmailApp.getMessagesForThread(GmailApp.search("label:labelname"));

should include an array index since GmailApp.search returns an array, even if only one item is found.

var threads = GmailApp.getMessagesForThread(GmailApp.search("label:labelname")[0]);

would work but is wordy.

var thread_list = GmailApp.search("label:labelname");
var threads = GmailApp.getMessagesForThread(thread_list[0]);

IMO, the above is clearer in meaning.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!