UsersResource.MessagesResource.ListRequest returns 只有 100 条消息

UsersResource.MessagesResource.ListRequest returns only 100 messages

Google.Apis.Gmail.v1.UsersResource.MessagesResource.ListRequest有一个属性,MaxResults也就是"Maximum number of messages to return"。默认值为 100。以下代码允许我更改 MaxResults:

var request = new UsersResource.MessagesResource.ListRequest(service, "me");
request.MaxResults = 5;
IList<Message> messages = request.Execute().Messages;

如果我指定的值 < 100,则只返回该数量的消息。但是,如果我指定一个大于 100 的数字,则只返回 100。我怎样才能返回所有消息?

如果您为 listing messages 试用 API 浏览器,您会发现如果您获得 100 个或更多结果,Google 会为您分页,这样您就不会最终不会意外获取数千个结果。要获取下一页,只需在下一个请求中包含您从第一个响应中获得的 nextPageToken

要求:

GET https://www.googleapis.com/gmail/v1/users/me/messages

回复(第1页):

{
 "messages": [
    {
     "id": "15049b2405be054a",
     "threadId": "15049b2405be054a"
    }, . . .
  ],
 "nextPageToken": "07838313978415221418"
}

下一个请求:

GET https://www.googleapis.com/gmail/v1/users/me/messages?pageToken=07838313978415221418

回复(第2页):

{
 "messages": [
    {
     "id": "14ffa7f009d50dd1",
     "threadId": "14ffa7f009d50dd1"
    }, ...
  ], ...
}

继续这样做,直到响应中没有 nextPageToken,您将获取所有结果。