Google Search Console API,google.webmasters.searchanalytics.query“startDate字段是必需的”

问题描述 投票:1回答:1

我正在尝试使用Google Search Console API(nodejs)来检索查询报告。我们拥有一个谷歌帐户,其中配置了我公司的所有域名。我们希望从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 Explorer我可以测试api没有错误。

我不知道它能成为什么,但它似乎是非常愚蠢的。

node.js google-api google-webmaster-tools google-api-nodejs-client google-api-webmasters
1个回答
1
投票

这个修改怎么样?

在Node.js的googleapis中,请求正文放在resource中。所以在你的情况下,startDateendDate被放入resource

From:

p = {
    auth        : auth,
    siteUrl     : domain,
    startDate   : '2019-03-01',
    endDate     : '2019-03-31'
};

To:

p = {
  auth: auth,
  siteUrl: domain,
  resource: {
    startDate: '2019-03-01',
    endDate: '2019-03-31'
  }
}

Reference:

© www.soinside.com 2019 - 2024. All rights reserved.