1

print_r($segments) の後、配列の出力は次のようになります。

Array
(
    [kind] => analytics#segments
    [username] => account@gmail.com
    [totalResults] => 2334
    [startIndex] => 1
    [itemsPerPage] => 1000
    [items] => Array
    (
        [0] => Array
            (
                [id] => -1
                [kind] => analytics#segment
                [selfLink] => https://www.googleapis.com/analytics/v3/management/segments/gaid::-1
                [segmentId] => gaid::-1
                [name] => All Visits
                [definition] => 
            )
...

        [999] => Array
            (
                [id] => -1
                [kind] => analytics#segment
                [selfLink] => https://www.googleapis.com/analytics/v3/management/segments/gaid::-1
                [segmentId] => gaid::-1
                [name] => All Visits
                [definition] => 
            )
    )
)

この配列は、google アナリティクス API PHP からの出力です。表示される最大値は、itemsPerPage パラメーターに記載されているように1000行ですが、totalResultsパラメーターに記載されているように、 2334に近い 1000 を超えています

一度にすべての出力を表示するように強制する方法を知っている人はいますか?

これを実行すると:

 $nextLink = $results->getNextLink()
            ? $results->getNextLink() : 'none';

print($nextLink);

出力はリンクです: https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles?start-index=1001&max-results=1000

Accoring to this ドキュメント I have to use the parameter called の最大結果 to display more results per page, but I have no idea how to do so, no much documentation about it.

max-resultsパラメータまたはlinkを使用して残りの結果を取得する方法はありますか?

4

1 に答える 1

3

簡単な回答: https://developers.google.com/analytics/devguides/reporting/core/v3/coreDevguide#working

Pagination Informationを見てください。データにはgetNextLink()とが必要なようです。getPreviousLink()これはデータの一部ではない可能性があり、 で印刷されませんprint_r()

ネットワーク経由で API にアクセスするときに、API が返す必要のある情報の量がわからない場合、一度に大量のデータを送信する危険を冒したくはありません。これにより、不要なトラフィックが大量に発生し、システム全体の速度が低下する可能性があります。

解決策の 1 つであるページネーションは、一定数の応答 (この場合は 1000) を送り返し、API のユーザーがさらに必要な場合は、次のセットを明示的に要求することです。

疑似コード: (申し訳ありませんが、これを試すための動作する Google-API セットアップがありません)

$finalArray = array();

//Copy $segments into $finalArray;
while(!empty($segments->getNextLink()))
{
    //Use $segments->getNextLink()
    //$segments now contains the next set of data
    //Copy $segments into $finalArray;
}
于 2012-11-06T03:29:05.080 に答える