Gmail API:messages.list突然出现了一条消息错误密钥,尽管前一次迭代中有nextPageToken

时间:2018-06-06 16:47:41

标签: gmail-api

我过去一年使用这些测试https://developers.google.com/gmail/api/v1/reference/users/messages/list#try-it过去常常与Gmail API进行交互,但现在这些示例都失败了,因为似乎有更多消息,但下一次迭代是空的。

问题在于这部分代码:

while 'nextPageToken' in response:
      page_token = response['nextPageToken']
      response = service.users().messages().list(userId=user_id, q=query,
                                         pageToken=page_token).execute()
      messages.extend(response['messages'])

尝试访问响应['消息']时会出现错误,因为响应中的唯一键是' resultSizeEstimate'并且是0.听起来像page_token指向下一个空页面。

有人遇到此问题吗?

1 个答案:

答案 0 :(得分:0)

如果您的上一页完美地包含上一封包含该特定查询的电子邮件,那么您将获得一个nextPageToken页面,其中包含以下回复:

{
  "resultSizeEstimate": 0
}

解决此问题的最简单方法是添加一项检查,如果messages是响应的一部分:

while 'nextPageToken' in response:
      page_token = response['nextPageToken']
      response = service.users().messages().list(userId=user_id, q=query, pageToken=page_token).execute()
      if 'messages' in response:
            messages.extend(response['messages'])