【发布时间】:2013-09-13 18:16:16
【问题描述】:
我创建了每 15 分钟触发一次并监控收件箱标签以查找新邮件的 Google 应用脚本。该标签由电子邮件过滤器应用,该过滤器仅对来自特定电子邮件地址和特定主题的电子邮件进行标记。当脚本运行时:
- 检查是否有任何带有该标签的邮件
- 获取电子邮件正文
- 拆分
"<br />"中的句子 - 将生成的数组粘贴到电子表格中
- 删除收件箱标签,使其不再在收件箱中。
我遇到的问题是该脚本在运行时不会将任何内容粘贴到电子表格中,它会跳过它并只是删除标签。如果我手动进入并将标签重新添加到消息中,则下次运行脚本时,它会完美地将所有数组元素添加到电子表格中,然后删除标签。但我不想每次都重新申请标签。我是脚本新手,如果我的代码不符合公认标准,我深表歉意。
function myFunction() {
//Get Email and split data into array
var NewPhy = GmailApp.getUserLabelByName("New Physician Request")
var TransPhy = GmailApp.getUserLabelByName("Transferred Physician Request")
var Threads = GmailApp.getUserLabelByName("New Physician Request").getThreads();
if (Threads.length > 0) {
var messages = Threads[0].getMessages()
var body = messages[(messages.length - 1)].getBody().split("<br />")
//Search, tag, and import values into spreadsheet
var Spreadsheet = SpreadsheetApp.openByUrl(" Spreadsheet URL here ");
var Sheet = Spreadsheet.getSheetByName("Sheet Name here").insertRowBefore(3);
var SiteElement = ArrayLib.find(body, -1, "Associated Customer Site Information:")
var Site = body[SiteElement + 1].replace(/[A-Z]{3}/gm, "").replace(/(<([^>]+)>)/igm, "").replace(/^[ \t]+/igm, "").replace(/</igm, "").replace(/>/igm, "").replace(/ /igm, "").replace(/"/igm, "").trim()
var A3 = Sheet.getRange("A3").setValue(Site).setBorder(true, false, false, false, false, false).setBackgroundRGB(239, 239, 239);
var ConsultantElement = ArrayLib.find(body, -1, "Marketing Consultant 1 =")
var Consultant = body[ConsultantElement].replace("Marketing Consultant 1 =", "").replace(/[A-Z]{3}/gm, "").replace(/(<([^>]+)>)/igm, "").replace(/^[ \t]+/igm, "").replace(/</igm, "").replace(/>/igm, "").replace(/ /igm, "").replace(/"/igm, "").replace(/^[ \t]+/, "").trim()
var C3 = Sheet.getRange("C3").setValue(Consultant).setBorder(true, false, false, false, false, false);
// Remove inbox label and add Transferred label
TransPhy.addToThread(Threads[0])
NewPhy.removeFromThread(Threads[0])
}
【问题讨论】:
-
我认为问题出在你被
<br>标签分割的地方。您可以在拆分之前记录电子邮件的内容吗?来自同一来源的电子邮件可以有不同的换行符,具体取决于电子邮件客户端的行为方式。因此,如果您可以记录有用的电子邮件内容 -
使用新的 GMailMessage.getPlainBody() 方法然后使用 sting 操作可能会很有用。这将从邮件正文中去除 HTML 并使其更易于操作。
标签: email triggers google-apps-script