调用Gmail API时如何使用fields参数

时间:2016-02-07 04:44:18

标签: api google-api gmail-api

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

我使用Users.messages: list列出用户邮箱中的邮件,响应中包含一个名为messages的数组,每封邮件包含一个{{1}和} id一样:

threadId

但我需要回复以包含有关每封邮件的更多信息,因此我不必为每条邮件单独设置 Users.messages:get

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

点击" 使用字段编辑器"选择我需要的三个项目,它填写以下内容:

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

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

messages(id,internalDate,payload)

但是,结果中的https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CinternalDate%2Cpayload)&key={YOUR_API_KEY} 数组不包含messagesinternalDate字段。它只包含消息payload,如下所示:

id

它也不再包含 "messages": [ { "id": "152b93b1111c33e2" }, { "id": "152b93338c98cb3" } ... ,但如果我选择其中一个字段,它会继续包含threadId,如下所示:

threadId

,URL看起来像这样......

messages(id,threadId)

结果与上面的第一个结果完全一样,我们没有使用fields参数。

所以我知道https://www.googleapis.com/gmail/v1/users/test@test.com/messages?fields=messages(id%2CthreadId)&key={YOUR_API_KEY} 参数 实际上正在做某事。

认为这可能只是API Explorer的限制,我尝试在Google Apps脚本中进行API调用,但它仍然不包含我需要的字段。

1 个答案:

答案 0 :(得分:5)

你快到了。

列出邮件时,您收到的每封邮件都会idthreadId。然后你必须get each message separately

如果你是只需要消息的internalDate,它就在此请求中,应该在fields参数中指定。

请求

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

<强>响应

{
 "internalDate": "1454778787000"
}