脚本只返回名为“ GmailLabel”的标签

时间:2019-07-24 12:42:24

标签: javascript google-apps-script gmail

我已经开始为财务创建脚本,该脚本取决于标签名称。当我调用标签列表时,它会返回正确数量的标签,但是它们的名称不是“ Discover”或“ American Express”,而是全部命名为“ GmailLabel”。它们全部有10个。没用

我尝试添加和删除标签,这表明它返回正确数量的标签,只是未命名其实际名称。我尝试调用.getUserLabelByName('GmailLabel'),该方法返回null。

function getFinances() {

  Logger.log("Running getFinances()")

  // this prints: GmailLabel 10
  Logger.log(GmailApp.getUserLabels().toString()
             +" "
             + GmailApp.getUserLabels().length)

  // this prints: Found null
  var label = GmailApp.getUserLabelByName('GmailLabel')
  Logger.log("Found "+label) 

  // this fails to print
  var threads = label.getThreads()
  Logger.log("Found "+threads.length+" threads")

  // this is where my script would append rows with email data
  for (var i = 0; i < threads.length; i++) {

    var messages = threads[i].getMessages()
    var subject = threads[0].getFirstMessageSubject()
    var body = messages[0].getPlainBody()

    Logger.log("adding row for " + subject)
    if (body) {
      var x = body.match(/\$\d+(?:\.\d+)?/)
      var money = (x && x[1]) ? x[1].trim() : 'N/A'
    }

    var sheet = SpreadsheetApp.getActiveSpreadsheet()
    sheet.appendRow([money, subject])

  } 
}

我希望返回的标签与我的实际标签名称(“发现”,“美国运通”等)相对应,但我只会得到GmailLabel。

1 个答案:

答案 0 :(得分:1)

正在打印类名称。您需要调用该方法以获取实际名称。

替换:

var label = GmailApp.getUserLabelByName('GmailLabel')
Logger.log("Found "+label) 

具有:

var label = GmailApp.getUserLabelByName('GmailLabel')
Logger.log("Found "+label.getName())