【发布时间】:2017-05-24 10:31:06
【问题描述】:
我正在使用此 Google Apps 脚本从 gmail 邮件的正文中提取和解析数据字段。我已经修改了脚本,使其适用于我电子邮件中的字段。但是,我发现它仅在电子邮件具有不同主题行时才有效。例如,如果我有五封不同主题行的电子邮件,脚本将在 Google 电子表格中创建 5 行,每封电子邮件一行。但是,如果我有 5 封电子邮件都具有相同的主题行,那么收件箱中最旧的电子邮件只会得到一行。有谁知道我可以如何修改此脚本,以便所有电子邮件的主题行都相同?谢谢!
/* Based on https://gist.github.com/Ferrari/9678772 */
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(/Name:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/Title:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var title = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/Organization:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var organization = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/City:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var city = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/State:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var state = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/country:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var country = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/E-mail:\s*([\s\S]+)/);
var email = (tmp && tmp[1]) ? tmp[1] : 'No comment';
sheet.appendRow([username, title, organization, city, state, country, email]);
} // End if
} // End for loop
}
【问题讨论】: