脚本仅返回名为 "GmailLabel" 的标签

Script is returning my labels only as named "GmailLabel"

我已经开始为我的财务创建一个脚本,该脚本依赖于我的标签名称。当我调用我的标签列表时,它 returns 是正确的标签数量,但它们没有被命名为 "Discover" 或 "American Express",它们都被命名为 "GmailLabel".. 全部其中 10 个。这没有用。

我试过添加和删除标签,这表明 returns 标签的数量正确,只是没有命名它们的实际名称。我试过调用 .getUserLabelByName('GmailLabel') 其中 returns 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])

  } 
}

我希望返回的标签与我的实际标签名称("Discover"、"American Express" 等)相对应,但我只收到 GmailLabel。

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

替换:

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

与:

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