我在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}
数组不包含messages
或internalDate
字段。它只包含消息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调用,但它仍然不包含我需要的字段。
答案 0 :(得分:5)
你快到了。
列出邮件时,您收到的每封邮件都会id
和threadId
。然后你必须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"
}