【发布时间】:2021-02-23 15:28:27
【问题描述】:
我创建了一个在 Gmail 中搜索我的收件箱的功能,然后将每条消息分为 3 个类别(姓名、电子邮件和正文)。然后将其粘贴到 Google 表格的 3 列中。但是,当我运行它时,它只会在前 2 列中粘贴名称和电子邮件。问题出在身体上。尽管如此,当我运行Logger.log(d.getPlainBody()); 时,它会显示我正在寻找的正文。
我正在使用的代码:
// extract emails from label in Gmail
function extractEmails() {
// get the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// get all email threads that match label from Sheet
var threads = GmailApp.getInboxThreads();
// get all the messages for the current batch of threads
var messages = GmailApp.getMessagesForThreads(threads);
var emailArray = [];
// get array of email addresses
messages.forEach(
function(message) {
message.forEach(
function(d) {
emailArray.push(d.getFrom(),d.getTo(),d.getPlainBody());
Logger.log(d.getPlainBody());
});
});
// de-duplicate the array
var uniqueEmailArray = emailArray.filter(function(item, pos) {
return emailArray.indexOf(item) == pos;
});
var cleanedEmailArray = uniqueEmailArray.map(
function(el) {
var matches = el.match(/\s*"?([^"]*)"?\s+<(.+)>/);
if (matches) {
name = matches[1];
email = matches[2];
body = matches[3];
}
return [name, email, body];
});
// clear any old data
sheet.getRange(2,1,sheet.getLastRow(), 3).clearContent();
// paste in new names and emails
var printing = sheet.getRange(2 ,1,cleanedEmailArray.length, 3);
printing.setValues(cleanedEmailArray);
}
【问题讨论】:
标签: javascript google-apps-script google-sheets gmail