无法使用Gmail API在列表请求中获取邮件详细信息

时间:2017-11-20 17:52:38

标签: ruby-on-rails google-api gmail-api google-api-client

我正在使用连接到Gmail API的rails应用程序上的ruby。当我发出list请求以获取一个邮箱的所有邮件时,我只会为每封邮件返回idthreadId属性。

我尝试使用fields参数关注Gmail API Doc以获取其他属性(标题,日期...)。无论我在我的应用中使用google-api-client gem,还是直接GET请求,它都无法使用。

向请求添加任何其他参数以失败告终。这是有效的网址: https://www.googleapis.com/gmail/v1/users/me/messages?fields=messages(id,threadId)

我是否被迫为每封邮件拨打一个电话或使用批量请求获取相关数据?看起来有点沉重......

1 个答案:

答案 0 :(得分:2)

首先需要list messages像你一样,然后get each message in a separate request

请求1

GET https://www.googleapis.com/gmail/v1/users/me/messages?maxResults=1&access_token={ACCESS_TOKEN}

回复1

{
 "messages": [
  {
   "id": "15fd9f0fe242f975",
   "threadId": "15fd9f0fe242f975"
  }
 ],
 "nextPageToken": "11889180580605610074",
 "resultSizeEstimate": 2
}

请求2

GET https://www.googleapis.com/gmail/v1/users/me/messages/15fd9f0fe242f975?access_token={ACCESS_TOKEN}

回复2

{
 "id": "15fd9f0fe242f975",
 "threadId": "15fd9f0fe242f975",
 "labelIds": [
  "IMPORTANT",
  "CATEGORY_UPDATES",
  "INBOX"
 ],
 "snippet": "Tasks tracked last week...",
 "historyId": "966691",
 ...
}

使用batch requests也可以将请求总数从1 + n of messages降低到2。