【问题标题】:Search/replace labels in specific messages (not the whole thread) with Google Apps Script使用 Google Apps 脚本搜索/替换特定消息(不是整个线程)中的标签
【发布时间】:2017-04-05 21:23:13
【问题描述】:

我正在使用关闭对话视图的 Gmail 工作,我需要使用“旧标签”搜索特定邮件,我只想使用 Google 脚本将这些特定邮件的标签更改为“新标签”。

我现在只能设法找到消息的标签名称并获取整个线程的所有消息,即使这些单独的消息不包含此标签。所以它们也将重命名为“NewLabel”,这是不需要的。

这是我到现在为止的代码。

var oldlabel = GmailApp.getUserLabelByName("Oldlabel");
var newlabel = GmailApp.getUserLabelByName("Newlabel");
var threads = GmailApp.search("label:Oldlabel")
  for (var i=0; i< threads.length; i++) {
    threads[i].removeLabel(oldlabel);
    threads[i].addLabel(newlabel);
  }

【问题讨论】:

  • 你的代码和问题在哪里?
  • 我现在用到目前为止的代码重写了我的问题
  • 检查this。这和你的问题完全一样。
  • 我不确定这是否是解决方案。我并不担心我可以在特定消息中添加或删除标签,但我需要知道我想要更改的消息的消息 ID。我将重写我的原始问题以使其更清楚

标签: google-apps-script gmail


【解决方案1】:

在此澄清。无论对话视图是打开还是关闭,或者您是否知道消息的 ids,对于 Gmail Service,您无法操作单个消息的标签,因为 GmailMessage 类没有与标签相关的方法.只有GmailThread 类有getLabels()GmailLabel 类也有 addToThread()addToThreads() 等,但它没有与消息相关的方法。如果官方文档中没有,则不存在。

所以我向你推荐了another answer,它使用了Gmail API。我自己没有测试过,但它看起来可以工作。请自己试一试。

【讨论】:

  • 不幸的是,这不是我想要的。我做了另一个工作,但这也不完美,但我现在能找到最好的。 Gmail 和线程多年来一直令人头疼,这是肯定的。感谢您的建议。
猜你喜欢
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多