【问题标题】:How to remove user Labels from Gmail using GScript如何使用 GScript 从 Gmail 中删除用户标签
【发布时间】:2021-09-05 15:40:19
【问题描述】:

关于删除Category Labels 的另一个问题,我想使用相同的代码,并简单地将其他用户标签添加到创建的例程中。

套路如下:

function removeLabelsFromMessages(query, labelsToRemove) {
  var foundThreads = Gmail.Users.Threads.list('me', {'q': query}).threads
  if (foundThreads) {
    foundThreads.forEach(function (thread) {
      Gmail.Users.Threads.modify({removeLabelIds: labelsToRemove}, 'me', thread.id);
    });
  }
}

function ProcessInbox() {
  removeLabelsFromMessages(
    'label:updates OR label:social OR label:forums OR label:promotions',
    ['CATEGORY_UPDATES', 'CATEGORY_SOCIAL', 'CATEGORY_FORUMS', 'CATEGORY_PROMOTIONS']
  )

  <...other_stuff_to_process...>
}

我想知道您是否可以向“labelsToRemove”添加另一个用户标签 - 我尝试简单地向数组添加另一个标签,但不断收到错误消息,指出找不到标签。我确定这只是一个语法错误(我的代码不多),所以关于如何添加它有什么建议吗?

我要运行的代码是:

function CleanReceipts () {
  removeLabel (
    'label: Receipts', 
    ['CATEGORY_UPDATES', 'CATEGORY_SOCIAL', 'CATEGORY_FORUMS', 'CATEGORY_PROMOTIONS', '@SaneLater']
  )
}

其中“@SaneLater”是我也想删除的用户标签的名称。提前致谢。

【问题讨论】:

    标签: google-apps-script gmail gmail-api


    【解决方案1】:

    您获得Label not found error 的原因是因为threads.modify 方法需要标签ID,而不是标签名称

    为了检索这个特定标签的id,我建议你看一下labels.list并发出请求以获取适当的值:

    let labels = Gmail.Users.Labels.list('me');
    console.log(labels);
    

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多