【发布时间】:2022-09-25 01:42:44
【问题描述】:
我正在尝试使用特定主题解析 Gmail,并将数据输出到特定列中的谷歌表。我只使用 getPlainBody() 选项让脚本工作,但后来我尝试添加 getDate() ,现在出现错误。
我确信我的语法有问题,现在我在 getGmail 和收集函数中尝试各种事情。我当前的代码如下,运行时,电子邮件的日期位于 A 列,电子邮件的整个正文位于 B 列,我收到错误“TypeError:message.replace 不是函数”。
function onOpen() {
const spreadsheet = SpreadsheetApp.getActive();
let menuItems = [
{name: \'Gather emails\', functionName: \'gather\'},
];
spreadsheet.addMenu(\'New Employees\', menuItems);
}
function gather() {
let messages = getGmail();
if (messages.length > 0) {
let curSheet = SpreadsheetApp.getActiveSheet();
curSheet.getRange(curSheet.getLastRow() + 1, 1, messages.length, messages[0].length).setValues(messages);
messages.forEach(message => {curSheet.appendRow(parseEmail(message))});
}
}
function getGmail() {
const query = \"from:(ApplicationServices@help.net) subject:New Account Newer_than:18d NOT label:done\";
let threads = GmailApp.search(query,0,10);
let label = GmailApp.getUserLabelByName(\"done\");
if (!label) {label = GmailApp.createLabel(\"done\")}
let messages = [];
threads.forEach(thread => {
const m = thread.getMessages()[0];
messages.push([m.getDate(), m.getPlainBody()]);
label.addToThread(thread);
});
return messages;
}
function parseEmail(message){
let parsed = message.replace(/,/g,\'\')
.replace(/\\n\\s*.+: /g,\',\')
.replace(/^,/,\'\')
.replace(/\\n/g,\'\')
.replace(/^[\\s]+|[\\s]+$/g,\'\')
.replace(/\\r/g,\'\')
.split(\',\');
let result = [0,1,2,3,4,5,6,7].map(index => parsed[index]);
return result;
}
以下是电子邮件的样子:
已创建帐户:
员工编号:987333
第一名:比尔
最后:沃尔什
用户名:bwalsh
密码:67&&8^.!员工必须尽快更改其电子邮件密码。 密码每 90 天过期一次,并且必须包含 8 个字符或更多字符(带有 至少一个大写字母、一个小写字母和一个数字或符号)。笔记: 此密码也是访问 Google 电子邮件的密码。
如果您需要帮助,请联系您所在地区的技术人员 支持团队或 HELP IT 帮助台 998-9999 或通过电子邮件发送至 helpdesk@help.net。
标签: google-apps-script google-sheets gmail