15
12

More than 5 years have passed since last update.

Google Analytics APIを使ってアクセス数上位100件のデータを取得する

Posted at

最近GoogleAPIを使ってコンテンツ生成する機会が増えてまして一度実装してみたものの忘れそうなのでメモしておきます。

phpでのAPIアクセス環境準備

composer.jsonのrequireキーに以下のパッケージを追加。

composer.json
"google/apiclient": "1.0.*@beta",

追記したパッケージのインストール

php ../composer.phar update google/apiclient
※composer.pharのパスは適宜合わせてください。
※運用中プロジェクトのため個別にパッケージを指定してupdateしてます。

GoogleAnalytics APIを利用するための準備

参考)https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/service-php

API経由でAnalyticsへアクセスするためのサービスアカウント追加

Google Developers Console > API Manager > 認証情報から
「新しい認証情報▼ > サービスアカウントキー」
を選択し、P12形式で鍵ファイルを取得。

作成したサービスアカウントのメールアドレスに対してGoogle Analytics側で「表示と分析」の権限付与

Google Developers Console > 権限 > サービスアカウント
画面から確認し、その情報をGoogle Analyticsで権限設定。

API経由でアクセス数上位100件のデータを取得

・P12ファイルを使った認証
・Analyticsアカウントで取得したい対象のプロファイルの指定
までの実装は
https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/service-php
を参考にしてください。
そこで取得した$profileIdに対して、直近1週間のアクセス数上位100件のURLを取得する場合は

    $startDate = date("Y-m-d", strtotime("-7 day"));
    $endDate   = date("Y-m-d");
    $this->results = $this->analytics->data_ga->get(
        'ga:' . $profileId,
        $startDate,
        $endDate,
        'ga:pageviews,ga:uniquePageviews',
        [
            'sort'        => '-ga:uniquePageviews',
            'max-results' => 1000,
            'dimensions'  => 'ga:pagePath'
        ]
    );

な感じになります。

取得したいdimensions、metricsは
https://developers.google.com/analytics/devguides/reporting/core/dimsmets
を参考にしてください。

ソート条件は対象のmetricsをsortオプションで指定してください。
降順の場合は対象metrics先頭文字列に「-(ハイフン)」をつけます。

Google APIドキュメントに記載された内容も一部取得出来ない可能性があるので
vendor/google/apiclient/src/Google/Service/Analytics.php
あたりも一緒に見るとよいと思います。

15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12