【问题标题】:google apps script - gmail - return message (not thread) via filter谷歌应用脚​​本 - gmail - 通过过滤器返回消息(不是线程)
【发布时间】:2019-04-10 13:24:30
【问题描述】:

我为特定的传入电子邮件分配了不同的标签,并且我在设置中禁用了线程(对话视图)。 我可以在 Web 应用程序中输入搜索,返回我想要的特定消息,

例如: “标签:customer01 标签:报告”

但是,使用与 API 完全相同的过滤器会返回线程和其中的所有消息——Google 已确定其中的所有消息都是同一对话的一部分(即使在现实世界中它们不是),这意味着我的脚本处理它应该处理的消息不是除了那些它应该的。

例如: var 线程 = GmailApp.search(gSearchExp); // 其中 gSearchExp 是前面提到的过滤器

有没有一种方法可以搜索和返回消息,而不是线程?

【问题讨论】:

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


    【解决方案1】:

    使用 Gmail API 怎么样?我认为通过使用 Gmail API,您可以检索带有特定标签的邮件。示例脚本如下。

    要使用此功能,请在高级 Google 服务和 API 控制台中启用 Gmail API。您可以在here 了解如何操作。

    示例脚本:

    var userId = "me";
    var query = "label:customer01 label:report";
    var res = Gmail.Users.Messages.list(userId, {q: query});
    var ids = res.messages.map(function(e){return e.id});
    Logger.log(ids) // Message IDs with the specific labels.
    

    注意:

    • 在此示例脚本中,检索具有特定标签的消息 ID。例如,如果您要检索消息正文,请使用检索到的消息 ID 进行检索。
    • 请根据您的环境修改var userId = "me"

    参考:

    如果我误解了你的问题,请告诉我。我想修改它。

    【讨论】:

    • 我认为这行不通,他专门要求 Google Apps 脚本。您将 Gmail API 用于一般的 Javascript,这是不同的。
    • @Cornelius Roemer 感谢您的评论。从您的评论中,我注意到label:customer01 label:report 是2 个字节的字符。我修改了它。太感谢了。顺便说一句,这是 Google Apps 脚本。这个怎么样?
    • 你是对的,它确实在 Apps 脚本中工作。天才! Apps脚本的文档中根本没有提到它。您基本上是在使用 Gmail API 中未记录的功能来破解 Apps 脚本,对吗?或者你怎么知道这种语法会起作用?此外,您需要添加 pageToken 以使其适用于许多结果。这对我有用:var nextPageToken="11930073761860123345"; var res = Gmail.Users.Messages.list(userId, {q: query,pageToken: nextPageToken});
    • 我找到了!它是“高级 Gmail 服务”而不是“内置”:developers.google.com/apps-script/advanced/gmail 非常感谢您让我看到这一点 - Google 的文档有时对初学者来说非常简洁。
    • @Cornelius Roemer 感谢您的回复。有几种方法无法实现 Google Apps 脚本的内置方法,只能实现高级 Google 服务。在这种情况下,使用高级 Google 服务。而且,当使用高级谷歌服务时,还可以降低处理成本。例如,Ref1Ref2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多