我正在使用Google Apps脚本从Gmail电子邮件中导出表单数据 . 该脚本使用正则表达式匹配电子邮件中的字符 . 每当我发现任何未通过脚本成功导出的数据时,我都会寻找脚本无法匹配的任何异常字符(通常是变音符号) . 这个策略运作良好,除了我无法弄清楚如何匹配像冒号一样简单的东西 . 包含冒号的任何表单数据都不会被我的脚本下载 . 有人可以帮忙吗?只需将冒号添加到应该匹配的字符列表中就不起作用了 . 这是完整的脚本 . 它查看了14个不同的表单字段 .

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

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

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

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

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

tmp = content.match(/Question:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
  var question = (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, affiliation, source, other, optout, share, question]);

} // End if
} // End for loop
}