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

Impossible to get messages details in a list request with Gmail API

我在连接到 Gmail API 的 rails 应用程序上使用 ruby。当我发出 list 请求以获取一个邮箱的所有消息时,我只为每条消息返回一个 id 和一个 threadId 属性。

我尝试按照 Gmail API Doc 使用 fields 参数获取其他属性(标题、日期...)。它不起作用,无论我是在我的应用程序中使用 google-api-client gem,还是通过直接 GET 请求。

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

我是否被迫为每条消息调用一次或使用批量请求来获取相关数据?好像有点重...

您首先需要list messages like you've done, and then 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