当我查询Gmail API时
results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10).execute()
我得到了这个输出。在这里,我不会收到所有消息,只返回了Thread Id
和id
"messages": [
{
"id": "1655b9b497dc76aa",
"threadId": "165380da74833127"
},
{
"id": "1655b9a7409383dd",
"threadId": "1655b9a7409383dd"
},
{
"id": "1655b9a25c441268",
"threadId": "16470b77316be7ab"
},
{....
为了获取消息,我必须再次查询。这里的问题是,当我使用Id查询时,它返回400错误,但是当我使用线程时,则返回带有代码段的消息。但是在documentation中,他们清楚地提到我们必须提供ID
id - string - The ID of the message to retrieve.
“ labelIds”:[ “未读”, “ CATEGORY_FORUMS”, “收件箱” ], “摘录”:“嗨,阿曼达,鲁万和米凡,我们已经与Verizon进行了RFP竞赛!请您回顾一下RFP并开始 在做这个吗?让我知道是否需要让WSO2电信参与其中。 谢谢,”, “ historyId”:“ 5217959”, “ internalDate”:“ 1534833021000” ....
作为JSON而不一次又一次使用每个ID进行查询?似乎Google API可能会使用限制机制阻止我,如果我要查询大量时间,因为我必须查询150000个ID。
答案 0 :(得分:2)
从文档Message resource中获得,响应中的每条消息均返回该文档。
id字符串消息的不变ID。
threadId字符串消息所属的线程的ID。要将消息或草稿添加到主题中,必须满足以下条件:
- 必须在消息或草稿中指定请求的线程ID。随请求提供的消息。
- 必须按照RFC 2822标准设置“引用”和“回复至”标头。 -Subject标头必须匹配。
您不能在message.threadid message.get上添加message.get。
如果不使用每个ID一次又一次地查询,是否可以将所有消息作为JSON查询?似乎Google API可能会使用限制机制阻止我,如果我要查询大量时间,因为我必须查询150000个ID。
否,可以返回的maxResults没有限制。我认为它在100左右,但我没有看到它的记录。您将必须使用请求中返回的nextPageToken来获取下一页结果。发出请求的速度有一个限制。因此,请保持合理的态度,否则您将受到限制。
根据问题编辑进行更新
我不能查询所有字段吗?
如果您使用fields=*
Doc on fields paramater
results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10,fields=*).execute()
您会注意到响应是相同的
{
"id": "1655bb6d0f2b5f8f",
"threadId": "1655bb6d0f2b5f8f"
},
这是files.list响应中的所有字段。如果您想了解更多信息,则必须执行message.get
Gmail配额
由于这个原因,Gmail的配额很大。大多数都可以扩展。