有没有办法一次性添加多个标签到谷歌应用程序脚本中的Gmail线程?

时间:2018-03-02 08:02:42

标签: google-apps-script gmail-api

我正在尝试以编程方式在google-app脚本中为Gmail主题添加一些标签。

立即使用thread.addLabel功能。 因为我要向多个线程添加多个标签,所以这种方法首先是缓慢的,而且在配额使用方面效率低。我必须为每个线程的每个标签调用thread.allLabel。

有没有办法一起为Gmail线程/邮件添加多个标签? Gmail API具有thread.modify功能,可用于添加多个标签。谷歌应用程序脚本中有类似的东西吗?

1 个答案:

答案 0 :(得分:2)

您想使用Google Apps脚本向线程添加多个标签。如果我的理解是正确的,那么如何使用高级Google服务的Gmail API呢?在GmailApp中,我找不到为线程添加多个标签的方法。所以我建议这个。我认为您可以使用gmail.users.messages.modify来实现它。示例脚本如下。要使用此脚本,请在高级Google服务和API控制台上启用Gmail API。

在高级Google服务中启用Gmail API v1

  • 在脚本编辑器上
    • 资源 - >高级Google服务
    • 启用Gmail API v1

Enable Gmail API at API console

  • 在脚本编辑器上
    • 资源 - >云平台项目
    • 查看API控制台
    • 在“入门”中,单击“启用API”并获取密钥等凭据。
    • 在左侧,单击“库”。
    • 在搜索API&服务,输入" Gmail"。然后点击Gmail API。
    • 单击“启用”按钮。
    • 如果API已启用,请不要关闭。

如果您现在使用使用Gmail API的脚本打开脚本编辑器,则可以通过访问此网址https://console.cloud.google.com/apis/api/gmail.googleapis.com/overview

为项目启用Gmail API

脚本流程:

  1. 检索标签列表。
  2. 使用标签名称检索标签ID。
  3. 将标签添加到帖子中。
  4. 示例脚本:

    var userId = "me";
    var threadId = "### thread ID ###"; // Please input a thread ID.
    var labels = ["### label name 1 ###", "### label name 2 ###"]; // Please input label names here.
    
    var labelList = Gmail.Users.Labels.list(userId).labels;
    var labelIds = labels.map(function(e){return labelList.filter(function(f){return f.name == e})[0].id});
    Gmail.Users.Messages.modify({"addLabelIds": labelIds}, userId, threadId);
    

    注意:

    • 这是一个简单的示例脚本。所以请将其修改为您的环境。

    参考文献:

    如果我误解了你的问题,我很抱歉。