我创建了每15分钟触发一次的Google App脚本,并监控新邮件的收件箱标签。该标签由电子邮件过滤器应用,该过滤器仅在来自特定电子邮件地址和特定主题的电子邮件时对其进行标记。当脚本运行它时:
"<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])
}
答案 0 :(得分:0)
@ patt0 - 我曾尝试过.getPlainBody()选项,但它没有帮助。事实证明问题不在于脚本如何解析数据,而是在最初的'if'语句中。我将前四行更改为此并修复了它:
var NewPhy = GmailApp.getUserLabelByName("New Physician Request")
var TransPhy = GmailApp.getUserLabelByName("Transferred Physician Request")
var Threads = NewPhy.getThreads()
if (Threads[0]) {
var messages = Threads[0].getMessages()
var body = messages[0].getBody().split("<br />")
在此之后,我留下了初始问题中显示的其余代码并且它可以正常工作。对于将来可能需要此类示例的任何人,此代码每5分钟触发一次,并监控Google收件箱中包含表单信函的电子邮件,然后从该表单中解析数据并将其添加到电子表格中。 / p>