"Try it"部分文档允许我播放API,字段选择器允许我选择许多字段,例如header, raw等。但在尝试API时,它们都没有出现。我看到的唯一东西仍然只是消息ID和线程ID。
https://developers.google.com/gmail/api/v1/reference/users/messages/list。如下:
GET https://www.googleapis.com/gmail/v1/users/{user_id}/messages?**fields=messages(historyId%2Cid%2Cpayload%2Craw%2CsizeEstimate%2Csnippet%2CthreadId)**&key={YOUR_API_KEY}
的回报:
{
"messages": [
{
"id": "146da54fe3dc089e",
"threadId": "146da54fe3dc089e"
},
{
"id": "146da41d9486982f",
"threadId": "146da41d9486982f"
},
...
}
但是我希望请求的额外字段也会返回。
有办法让这个工作吗?我知道有一个单独的方法来获取单个消息,但如果可能的话,我喜欢批量获取它们。
消息。List只返回标识符。不确定字段选择器是什么,但我不相信它被使用。
,但是您可以使用批处理消息。然后在第二次调用中一次检索许多消息:
批处理请求由多个API调用组合成一个HTTP请求组成。本节详细描述批处理语法;后面有一个例子。
注意:一组n个请求批处理在一起,作为n个请求计算到您的使用限制中,而不是作为一个请求。批处理请求在处理之前被分解成一组请求。
:https://developers.google.com/storage/docs/json_api/v1/how-tos/batch
使用Gmail API和批处理,这里有一些示例代码:
GTLBatchQuery *batchQuery = [GTLBatchQuery batchQuery];
[gmailMessageIds enumerateObjectsUsingBlock:^(NSNumber *messageId, NSUInteger idx, BOOL *stop) {
GTLQueryGmail *query = [GTLQueryGmail queryForUsersMessagesGet];
query.userId = self.account.email;
query.identifier = [NSString stringWithFormat:@"%llx", [messageId unsignedLongLongValue]];
query.format = kGTLGmailFormatRaw;
[batchQuery addQuery:query];
}];
[self.gmailService executeQuery:batchQuery completionHandler:^(GTLServiceTicket *ticket, GTLBatchResult *result, NSError *error) {
NSArray *gmailMessages = result.successes.allValues; // This is an array of GTLGmailMessage objects
...
}];
在浏览Google文档时,使用消息。get部分,我能够返回所有的字段值通过json使用方法getMessage(...)
.
在原始请求中,您得到了id
和threadId
。使用id,我们可以通过以下操作返回所有消息:
ListMessagesResponse mResponse =
service.users().messages().list(user).execute();
// This will return the json listed with the field methods id and threadId.
List<Message> messages = mResponse.getMessages();
// Parse the response
if(message.size() == 0){...}
else {
for(Message msg: messages)
*.getMessage(service,user,msg.getId());
}
上面不是确切的代码,但是,应该为您提供一个如何处理这个问题的想法。