1

我正在使用 Google Analytics API 来检索我的一份个人资料的报告数据。如果报告中的行数超过 1000,则响应包含 1,000 个结果以及一个名为 的参数nextPage,该参数包含下一页数据的 URL。我很困惑如何实际使用这个 URL 来检索数据。我使用什么 API 方法来实际获取下一页数据。这是我的代码:

$client = new Google_Client();
$client->setApplicationName('Google Analytics'); // name of your app

// set assertion credentials
$client->setAssertionCredentials(
  new Google_Auth_AssertionCredentials(

    GOOGLE_ANALYTICS_SERVICE_EMAIL, // email you added to GA

    array('https://www.googleapis.com/auth/analytics.readonly'),

    file_get_contents(storage_path().'/keys/privatekey.p12')  // keyfile you downloaded

));

$client->setClientId(GOOGLE_ANALYTICS_CLIENT_ID);           // from API console

$service = new Google_Service_Analytics($client);

$result = $service->data_ga->get(
        'ga:'.DEFAULT_VIEW_ID,
        '2014-09-01',
        '2015-01-26',
        'ga:uniquePageViews',
        array(
                'dimensions'=>'ga:dimension1',
                'filters'=>'ga:dimension3==product'
        )
);

print_r($result);

结果是Google_Service_Analytics_GaData对象,其中包含 1000 行的数据加上以下内容:

[nextLink] => https://www.googleapis.com/analytics/v3/data/ga?ids=ga:86454007&dimensions=ga:dimension1&metrics=ga:uniquePageViews&filters=ga:dimension3%3D%3Dproduct&start-date=2014-09-01&end-date=2015-01-26&start-index=1001&max-results=1000

如何使用它nextLink来检索下一页数据?谷歌 SDK 中必须有一些为此内置的机制,对吧?

4

1 回答 1

1

如果您查看该链接中的参数,您会发现它与原始查询相同,但start-index值设置为1001

https://www.googleapis.com/analytics/v3/data/ga?
  ids=ga:86454007&
  dimensions=ga:dimension1&
  metrics=ga:uniquePageViews&
  filters=ga:dimension3%3D%3Dproduct&
  start-date=2014-09-01&
  end-date=2015-01-26&
  start-index=1001&
  max-results=1000

所以基本上你必须继续查询直到start-index+ itemsPerPage> totalResults。此外,如果您知道您将拥有一个大型数据集,您通常可以将该max-results字段设置为更高的值,例如10000.

它不是 PHP SDK 的一部分,但此模块显示了发出多个请求直到totalResults到达的示例。

于 2015-01-28T02:24:21.210 回答