【问题标题】:Download data from Google webmaster tools API从 Google 网站管理员工具 API 下载数据
【发布时间】:2015-05-11 14:48:13
【问题描述】:

谁能提供有关如何从 Google 网站管理员工具 API 导出 TOP_QUERIES 的示例或链接?

存储库中没有示例,似乎任何地方都没有可用的教程/示例

https://github.com/google/google-api-php-client

此代码连接到网站管理员工具。如何从特定日期间隔下载TOP_QUERIES

代码

require_once 'googleapi/autoload.php';

try{
    $credentials = new Google_Auth_AssertionCredentials(
        '262251945544-20r941rab6leiuo21ph7ielemtrcsmai@developer.gserviceaccount.com',
        [Google_Service_Webmasters::WEBMASTERS_READONLY],
        file_get_contents('9f21d103bb56.p12')
    );
    
    $client = new Google_Client();
    $client->setAssertionCredentials($credentials);
    if($client->getAuth()->isAccessTokenExpired()){
        $client->getAuth()->refreshTokenWithAssertion();
    }
    
    $service = new Google_Service_Webmasters($client);
    $t = $service->sites->get('https://example.com/');
    print_r($t);
}
catch(Google_Exception $e){
    echo $e->getMessage();
}
catch(Google_Service_Exception $e){
    echo $e->getMessage();
}

【问题讨论】:

  • 给定的示例都没有以与您相同的方式显示 OAuth 的使用。这个很接近:github.com/google/google-api-php-client/blob/master/examples/… - 它使用客户端 ID 并在创建令牌时使用它。
  • 这个例子只显示了 apiKey:github.com/google/google-api-php-client/blob/master/examples/… 并且有一个很好的错误检查,可能想要添加它。
  • 你发布的最后一个链接是我在我的问题中尝试的那个..
  • 该示例未定义任何 OAuth。所以我对你想要做的事情感到困惑。请澄清。
  • 我发现这是我使用的错误凭据 (OAuth).. 现在已经创建了公共 API 访问.. 但仍然得到同样的错误Login Required

标签: php google-search-console


【解决方案1】:

这一行之后

    $service = new Google_Service_Webmasters($client);

添加这个

$searchanalytics = $webmastersService->searchanalytics;
$request = new \Google_Service_Webmasters_SearchAnalyticsQueryRequest();
$request->setStartDate('2016-03-01'); // startdate required 
$request->setEndDate('2016-03-31');  // Enddate required 
$dimensions[] = 'query';
$request->setDimensions($dimensions);

比替换这一行

$results = $service->searchanalytics->query( $url, $search, $options )->getRows();

通过

$results = $searchanalytics->query('site_URL', $request);

它为我们工作..... :)

【讨论】:

  • 这正是我一直在寻找的信息。谢谢
【解决方案2】:
Error calling GET
https://www.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fexample.com%2F: (404)
'https://example.com/'

在此帐户中不是经过验证的网站站长工具网站。

该站点不是以http:// 开头,而是以www.example.comexample.com 开头。也没有尾随斜杠。

$t = $service->sites->get('example.com');

https://api.kdyby.org/class-Google_Service_Webmasters_SitesListResponse.html

试试那些 sn-ps:

<?php
$sites = $service->sites->listSites();
print_r(json_encode($sites->toSimpleObject());

<?php
$sites = $service->sites->listSites();
foreach ($sites as $site) {
    print_r($site);
}

【讨论】:

  • 没有。它直接从网站管理员工具复制/粘贴
  • 没有。 Google 只允许使用 DOMAIN,而不是 URL。
  • 无论我如何键入站点,都会返回错误。如果我调用$t = $service-&gt;sites-&gt;listSites();,它似乎返回了一个 amtpy 对象
  • 仍然没有返回站点.. :-/
  • 呵呵..我必须为电子邮件262251945544-20r941rab6leiuo21ph7ielemtrcsmai@developer.gserviceaccount.com..添加权限。现在它可以工作了..但是你能告诉我如何根据原始问题检索TOP_QUERIES吗?跨度>
【解决方案3】:

假设您的应用程序设置正确,以下是我采用的方法的示例:

// Authenticate through OAuth 2.0
$credentials = new Google_Auth_AssertionCredentials(
    '1111111111-somebigemail@developer.gserviceaccount.com',
    [Google_Service_Webmasters::WEBMASTERS_READONLY],
    file_get_contents( 'path-to-your-key.p12' )
);
$client = new Google_Client();
$client->setAssertionCredentials( $credentials );
if ( $client->getAuth()->isAccessTokenExpired() ) {
    $client->getAuth()->refreshTokenWithAssertion();
}
$service = new Google_Service_Webmasters($client);

// Setup our Search Analytics Query object
$search = new Google_Service_Webmasters_SearchAnalyticsQueryRequest;
$search->setStartDate( date( 'Y-m-d', strtotime( '1 month ago' ) ) );
$search->setEndDate( date( 'Y-m-d', strtotime( 'now' ) ) );
$search->setDimensions( array( 'query' ) );
$search->setRowLimit( 50 );

// Pass our Search Analytics Query object as the second param to our searchanalytics query() method
$results = $service->searchanalytics->query( $url, $search, $options )->getRows();

// Build a CSV
if ( ! empty( $results ) ) {
    // Setup our header row
    $csv = "Rank,Query,Clicks,Impressions,CTR,Position\r\n";
    foreach ( $results as $key => $result ) {
        // Columns
        $columns = array(
            $key + 1,
            $result->keys[0],
            $result->clicks,
            $result->impressions,
            round( $result->ctr * 100, 2 ) . '%',
            round( $result->position, 1 ),
        );
        $csv .= '"' . implode( '","', $columns ) . '"' . "\r\n";
    }
    file_put_contents( dirname( __FILE__ ) . '/data.csv' );
}

我刚刚在我的博客上发布了一篇完整的文章,其中有一个示例类,我开始编写它作为网站管理员工具 API 和分析 API 的包装器。随意将其用作参考:

http://robido.com/php/a-google-webmaster-tools-api-php-example-using-search-analytics-api-to-download-search-analytics-data-as-csv-with-the-new-oauth-2-0-method/

【讨论】:

  • $options 中的值/参数是什么? @jphase
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 2013-11-16
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多