在获取批量 Gmail 获取响应时出现无效的 FieldMask 错误
作者: mohsin创建于 2022年2月2日更新于 2022年4月25日
标签type: question
我正在尝试通过获取部分响应来提高 批量请求 的效率。我只对某些标头(发件人、收件人、主题)和邮件正文感兴趣。当我以以下方式运行代码时,代码运行正常:
$client = getClient();
$client->setUseBatch(true);
$service = new Google_Service_Gmail($client);
$batch = new Google_Http_Batch($client, false, null, 'batch/gmail/v1');
$request1 = $service->users_messages->get('me', '17eb57d85dd4933d', ['format'=>'full', 'fields' => 'id,snippet,payload(headers(name,value),body,parts)']);
$request2 = $service->users_messages->get('me', '17eb4fe58a1b3be6', ['format'=>'full', 'fields' => 'id,snippet,payload(headers(name,value),body,parts)']);
$batch->add($request1, "message" . '-17eb57d85dd4933d');
$batch->add($request2, "message" . '-17eb4fe58a1b3be6');
$result = $batch->execute();
var_dump($result);如上请求所示,我获取了所有的标头名称和值对,即 payload(headers(name,value)。但是,当我将代码更改为仅选择某些标头(我只对发件人、收件人和主题感兴趣)时,API 会向我报错:
Invalid FieldMask 'id,snippet,payload(headers(name,value)[name=From,To,Subject],body,parts)'. Map keys should be represented as ["some_key"]。我尝试将其改为 headers(name,value)[name="From",name="To",name="Subject"] 和一些其他格式,但无法弄清楚如何正确获取。API 文档也没有深入讨论如何在键值对中选择特定标头,因此欢迎您提供帮助。谢谢。
内容来源: googleapis/google-api-php-client