最近GoogleAPIを使ってコンテンツ生成する機会が増えてまして一度実装してみたものの忘れそうなのでメモしておきます。
phpでのAPIアクセス環境準備
composer.jsonのrequireキーに以下のパッケージを追加。
"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
あたりも一緒に見るとよいと思います。