0

我创建了每 15 分钟触发一次并监控收件箱标签以查找新邮件的 Google App 脚本。该标签由电子邮件过滤器应用,该过滤器仅对来自特定电子邮件地址和特定主题的电子邮件进行标记。当脚本运行它时:

  1. 检查是否有任何带有该标签的消息
  2. 抓取电子邮件的正文
  3. 拆分 at the 中的句子"<br />"
  4. 将生成的数组粘贴到电子表格中
  5. 删除收件箱标签,使其不再位于收件箱中。

我遇到的问题是脚本在运行时不会将任何内容粘贴到电子表格中,它会跳过它并只是删除标签。如果我手动进入并将标签重新添加到消息中,则下次运行脚本时,它会完美地将所有数组元素添加到电子表格中,然后删除标签。但我不想每次都重新申请标签。我是脚本新手,所以如果我的代码不符合公认的标准,我深表歉意。

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(/&lt;/igm, "").replace(/&gt;/igm, "").replace(/&nbsp;/igm, "").replace(/&quot;/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(/&lt;/igm, "").replace(/&gt;/igm, "").replace(/&nbsp;/igm, "").replace(/&quot;/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])
}
4

1 回答 1

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 收件箱中是否有一封包含套用信函的电子邮件,然后从该套用信函中解析数据并将其添加到电子表格中。

于 2013-09-26T15:00:58.870 回答