[PHP]GoogleAnalyticsからPV数を取得するまで
ホームページの解析に利用されるGoogleAnalyticsからPV数を取得するまでの備忘録
- GoogleDeveloersでプロジェクトの作成
- GoogleAnalyticsの設定
- PHPで取得する際のサンプル
1.GoogleDeveloersでプロジェクトの作成
新規プロジェクトの作成
https://console.developers.google.com/start へアクセスして、GoogleAnalyticsAPIを扱うためのプロジェクトを作成
名前はご自由に
Analytics APIの有効化
プロジェクトが利用するAPIを選択しなければいけないので、左のメニューからAPIを検索して AnalyticsAPIを有効化する
認証情報の追加
各GoogleのAPIを利用するためには、各サービスに応じた認証が必要となります。
今回はサーバからAPIを叩きに行くので、サービスアカウントで作成します。
キーのタイプは「.p12」でOKです。
サービスアカウントが作成されると同時に「.p12」形式の秘密鍵がダウンロードされます。
後ほど使うので保管しておきましょう。
作成されたサービスアカウントはこんな感じ
クライアントIDとメールアドレスは後ほど扱います。
新規プロジェクトの作成は以上です。
GoogleAnalyticsの設定
先ほど作成したプロジェクトのサービスアカウントの、GoogleAnalyticsへのアクセスを許可しましょう。
クライアントメールアドレスの追加
PV数を取得したいレポートを見ている状態で、上部メニューの「アナリティクス設定」をクリック
ユーザの追加をします。
「権利を付与するユーザー」に先ほど作成したクライアントIDのメールアドレスをコピペ
権限に表示と分析が含まれているか確認
ビューIDの確認
同じ設定のビュー項目で「ビュー設定」を選択
設定内に記載されている「ビューID」をメモメモ
このビューIDを用いて、APIはデータを取得するAnalyticsを一意に識別します
PHPで取得する際のサンプル
ライブラリ
API用のPHPライブラリをGoogleさんが提供してくれているので、そちらを使います。
google/apiclient
GitHub:https://github.com/google/google-api-php-client
packagist:https://packagist.org/packages/google/apiclient
コード
composer使ってるならいりませんが、使ってない人はライブラリ下の「autoload.php」をrequire_onceしてあげましょう。
public function getPageView()
{
//ビューID
$viewId = CORPORATE;
//GoogleAPI クライアント メールアドレス
$client_email = GAADD;
//.p12ファイル(秘密鍵)
$private_key = file_get_contents(P12KEY);
//メトリクス:取得するデータ ga:pageviewsはPV数
$metrics = "ga:pageviews";
//取得期間(Y-m-d形式)
$from = '2015-08-10';
$to = '2015-08-12';
//オプション
$option = [
"dimensions" => 'ga:date', //ディメンション:区切り 日付ごとに
"max-results" => 10000, //最大取得件数 10000がAPIの上限
"sort" => "ga:date", //ソート 日付順
];
//スコープのセット
$scopes = ["https://www.googleapis.com/auth/analytics.readonly"];
//クレデンシャルの作成
$credentials = new Google_Auth_AssertionCredentials($client_email, $scopes, $private_key);
//Googleクライアントのインスタンスを作成
$client = new Google_Client();
$client->setAssertionCredentials($credentials);
//トークンのリフレッシュ
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($credentials);
}
$_SESSION["service_token"] = $client->getAccessToken();
//Analyticsのインスタンスを作成
$analytics = new Google_Service_Analytics($client);
//データの取得
$obj = $analytics->data_ga->get(
"ga:{$viewId}",
$from,
$to,
$metrics,
$option
);
echo '<pre>';
var_dump($obj->rows);
echo '</pre>';
}
取得結果
array(3) {
[0]=>
array(2) {
[0]=>
string(8) "20150810"
[1]=>
string(3) "891"
}
[1]=>
array(2) {
[0]=>
string(8) "20150811"
[1]=>
string(3) "983"
}
[2]=>
array(2) {
[0]=>
string(8) "20150812"
[1]=>
string(4) "1003"
}
}
こんな感じになる(ハズ)
PV数以外も月ごととかも
上記サンプルの
//メトリクス:取得するデータ ga:pageviewsはPV数
$metrics = "ga:pageviews";
$option = [
"dimensions" => 'ga:date', //ディメンション:区切り 日付ごとに
"max-results" => 10000, //最大取得件数 10000がAPIの上限
"sort" => "ga:date", //ソート 日付順
];
このへんいじると、Session数とか情報の粒度とかいじれる。