谷歌 调用 Gmail API 时如何使用字段参数



我在Google Apps Script(基本上是Javascript(中使用Gmail API,我需要尽可能少地调用API,以提高效率和速度。

我正在使用 Users.messages: list 列出用户邮箱中的邮件,响应包括一个名为 messages 的数组,并且每封邮件都包含一个id和一个threadId,如下所示:

 "messages": [
  {
   "id": "152b93b1111c33e2",
   "threadId": "152b922266c33e2"
  },
  {
   "id": "152b93338c98cb3",
   "threadId": "152b922266c33e2"
  } ...

但是我需要响应包含有关每条消息的更多信息,这样我就不必为每条消息进行单独的 Users.messages:get 调用。

Users.messages: 列表页面上的 API 资源管理器显示,您可以使用 fields 参数来">指定要包含在部分响应中的字段"。

当我单击">使用字段编辑器"以选择我需要的三个项目时,它会在字段中填写以下内容:

messages(id,internalDate,payload)

然后当我执行命令时,它显示 GET 命令应如下所示:

https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CinternalDate%2Cpayload)&key={YOUR_API_KEY}

但是,结果中的messages数组不包括internalDatepayload字段。它仅包含消息id,如下所示:

 "messages": [
  {
   "id": "152b93b1111c33e2"
  },
  {
   "id": "152b93338c98cb3"
  } ...

它也不再包含threadId,但是如果我选择它作为字段之一,它确实会继续包含threadId,如下所示:

messages(id,threadId)

网址看起来像这样...

https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CthreadId)&key={YOUR_API_KEY}
结果

看起来与上面的第一个结果完全相同,我们没有使用 fields 参数。

所以我知道fields参数实际上是做某事。

考虑到这可能只是API资源管理器的限制,我尝试在Google Apps脚本中进行API调用,但它仍然不包括我需要的字段。

你快到了。

列出消息时,每条消息的idthreadId就是您获得的全部内容。然后,您必须单独获取每条消息。

例如,如果您只想要消息的internalDate,则应在此请求中在 fields 参数中指定。

请求

GET https://www.googleapis.com/gmail/v1/users/me/messages/152b792a91c9c391?fields=internalDate&key={YOUR_API_KEY}

响应

{
 "internalDate": "1454778787000"
}

相关内容

  • 没有找到相关文章