Google apps script 谷歌应用程序脚本-gmail-通过过滤器返回消息(非线程)

Google apps script 谷歌应用程序脚本-gmail-通过过滤器返回消息(非线程),google-apps-script,gmail,gmail-api,Google Apps Script,Gmail,Gmail Api,我为特定的传入电子邮件分配了不同的标签,并且在设置中禁用了线程(对话视图)。 我可以在web应用程序中输入搜索,返回我想要的特定消息 例如: “标签:customer01标签:报告” 然而,在API中使用完全相同的过滤器会返回线程和Google确定的所有消息都是同一对话的一部分(即使在现实世界中它们不是),这意味着我的脚本处理的消息不应该是它应该处理的消息之外的 例如: var threads=GmailApp.search(gSearchExp);//其中gSearchExp是前面提到的过滤器

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

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

然而,在API中使用完全相同的过滤器会返回线程和Google确定的所有消息都是同一对话的一部分(即使在现实世界中它们不是),这意味着我的脚本处理的消息不应该是它应该处理的消息之外的

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


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

使用Gmail API如何?我认为通过使用Gmail API,您可以检索带有特定标签的消息。示例脚本如下所示

为了使用此功能,请在高级谷歌服务和API控制台启用Gmail API。您可以在中查看如何执行此操作。

示例脚本: 注:
  • 在此示例脚本中,将检索带有特定标签的消息ID。例如,如果要检索消息正文,请使用检索到的消息ID检索它们
  • 请根据您的环境修改
    var userId=“me”
参考:

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

我认为这不管用,他专门要求谷歌应用程序脚本。您正在使用通用Javascript的Gmail API,这是不同的。@Cornelius Roemer感谢您的评论。从您的评论中,我可以注意到
标签:customer01标签:报告的
是2字节字符。我修改了它。非常感谢你。顺便说一下,这是谷歌应用程序脚本。这个怎么样?你说得对,它在应用程序脚本中确实有效。天才!应用程序脚本的文档中根本没有提到它。你基本上是在用Gmail API中未记录的特性来破解应用程序脚本,对吗?或者你怎么知道这个语法会起作用?此外,您还需要添加pageToken,使其能够处理许多结果。这对我很有用:
var nextPageToken=“11930073761860123345”;var res=Gmail.Users.Messages.list(userId,{q:query,pageToken:nextPageToken})我找到了!这是“高级Gmail服务”,而不是“内置服务”:非常感谢你让我看到这一点——谷歌的文档对初学者来说有时非常简洁。@Cornelius Roemer感谢你的回复。有几种方法无法实现谷歌应用程序脚本的内置方法,只能实现高级谷歌服务。在本例中,使用了高级Google服务。而且,当使用先进的谷歌服务时,流程成本也可以降低。例如
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.