我正在尝试使用Google Search Console API(nodejs)来检索查询报告。我们拥有一个Google帐户,其中配置了我公司的所有域。我们想从api中检索域的完整列表,然后从每个域中获取数据。
我们能够正确获取域的完整列表。但是我们可以获得它们的任何数据。
这是代码的简短示例。
// auth is the json web token
// domain is the url of the managed domain, example: https://www.asdfg.hif
async function getDomainData(auth, domain){
p = {
auth : auth,
siteUrl : domain,
startDate : '2019-03-01',
endDate : '2019-03-31'
};
try{
portalData = await google.webmasters('v3').searchanalytics.query(p);
console.log( portalData );
return portalData ;
}catch(error){
console.log('Error %s: %s', domain, error);
return null;
}
}//getDomainData
但是我总是遇到以下错误。这确实是不言而喻的。但是我不能理解它,因为我在p对象中提供了startDate和endDate参数。我尝试使用不同的日期格式,单引号,双引号,无引号...无论我如何更改,我总是会遇到必填字段错误。
GaxiosError: startDate field is required.
GaxiosError: endDate field is required.
我可以在Google Search API控制台中看到错误,因此我认为该错误来自服务器,而不是代码中的错误。
从API资源管理器中,我可以毫无错误地测试api。
我不知道会是什么,但这似乎很愚蠢。
答案 0 :(得分:1)
此修改如何?
在Node.js的googleapis上,请求正文放在resource
中。因此,在您的情况下,startDate
和endDate
放在resource
中。
p = {
auth : auth,
siteUrl : domain,
startDate : '2019-03-01',
endDate : '2019-03-31'
};
p = {
auth: auth,
siteUrl: domain,
resource: {
startDate: '2019-03-01',
endDate: '2019-03-31'
}
}
答案 1 :(得分:1)
对于从事此工作的任何人,我认为Google更改了API,现在他们使用 requestBody 而不是 resource ,因此格式为:
p = {
auth: auth,
siteUrl: domain,
requestBody: {
startDate: '2020-03-01',
endDate: '2020-03-31'
}
}