为什么我在 Google 脚本中使用 removeLabel 函数时得到无效参数

Why do I get an Invalid Argument when using the removeLabel function in Google Script

我想从电子邮件集合中删除用户创建的名为 "Add-to-Spendee-2" 的标签。我几乎完全按照 Google's removeLabel() Documentation 来解决这个问题,但我一直收到 "Invalid argument: label" 错误。

代码如下:

function removeLabel()

{
  var myLabel = GmailApp.getUserLabelByName('test-add-to-spendee-2');
  var threads = GmailApp.search("label:test-add-to-spendee-2 AND from:swiggy AND subject:(Your receipt for Swiggy order)");

  for (var x in threads) 
  {
  var thread = threads[x]
  thread.removeLabel(myLabel)
  }
  
}

注意:如果我将 removeLabel(myLabel) 替换为 markUnread() 等任何其他函数,代码将完美运行。

我认为您的代码可以工作,但我认为您需要做的就是:

var lbl=GmailApp.getUserLabelByName('Q0/Subject/Name');
var threads=GmailApp.search('label:Q0/Subject/Name');//exactly as you created it
lbl.removeFromThreads(threads);

尝试使用调试器并确保线程正在获取 GmailThread 对象数组。

这是标签在 Gmail 搜索中的样子 window:

他们将斜线更改为破折号并使用小写字母,这并不是标签的真实样子。

正如我在上面的评论中所说:

我最近才这样做,我发现 gmail 搜索中的标签描述 window 与我实际创建标签的方式不一致。它显示了一个像这样的标签 q0-subject-name 我将它创建为 Q0/Subject/Name 当我使用 q0-subject-name 时我找不到标签,当我使用 Q0/Subject/Name 时我找到了它。