在Gmail API中是否有一种方法可以在邮件列表方法中包含额外的字段(例如主题,正文)



"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(...) .

在原始请求中,您得到了idthreadId。使用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());
}

上面不是确切的代码,但是,应该为您提供一个如何处理这个问题的想法。

最新更新