karakaram-blog

Google Analytics API v3をPHPから利用する方法

 ツイート 14  シェア 36  Google+1 0  Hatena 50

google-analytics-logo

このブログも記事数やアクセス数が増えてきたので、他の情報サイトでよく見かける「人気ランキング」を作成してみました。サイドバーにある「カテゴリ別人気記事」がそれにあたります。WordPress Popular Posts のようなランキング作成プラグインを利用してもよかったのですが、せっかく Google Analytics でアクセス解析をしているので、Google Analytics API v3 から情報を取得してアクセスランキングを作成してみることにしました。API から情報を取得するにあたり、結構いろんなところでつまずいたので備忘録。

この記事では、Google Analytics API v3 を PHP のバッチで定期的に叩いて解析情報を取得し、月間 PV ランキング TOP10 を取得する方法を紹介します。

目次

  1. Google Developers Console を日本語化
  2. Google Developers Console で新規プロジェクトを作成
  3. Google Analytics API を有効化
  4. OAuth 2.0 の クライアント ID を作成する
  5. クライアント ID 作成時に発行されたメールアドレスを Google Analytics ユーザーに登録する
  6. Google Analytics のビュー ID をメモする
  7. PHP から API を叩く
  8. 当ブログのランキング表示について
  9. 参考サイト

Google Developers Console を日本語化

まずは下準備から。 https://cloud.google.com/console にアクセスして、左メニューの「Account Settings」をクリック。Language と Formats を日本語にします。

locale-japan

Google Developers Console で新規プロジェクトを作成

引き続き Google Developers Console で作業します。左メニューの「プロジェクト」をクリックして新規プロジェクトを作成します。プロジェクト名は何でもいいです。ここでは「API Project」とします。

add-project

Google Analytics API を有効化

作成したプロジェクトが一覧に表示されるのでリンクをクリックして詳細設定画面に移動します。左メニューの「API と認証」をクリックします。

analytics-api

API 一覧が表示されるので「Analytics API」を探し、有効化します。

analytics-api-enable

OAuth 2.0 の クライアント ID を作成する

左メニューの「認証情報」をクリックします。

create-clientid

「新しいクライアント ID を作成」をクリックします。

create-clientid-new

「サービスアカウント」を選択します。

create-clientid-service

「クライアント ID を作成」をクリックするとファイルダウンロードダイアログが開くのでファイルを保存しておきましょう。API を実行するときに必要になります。

create-clientid-keyfile-save

ファイルを保存すると秘密鍵のパスワードが表示されます。これもメモしておきましょう。

create-clientid-keyfile-password

作成が完了すると「クライアント ID」「メールアドレス」が発行されます。API を実行するときに必要になるのでメモしておきます。

create-clientid-info

クライアント ID 作成時に発行されたメールアドレスを Google Analytics ユーザーに登録する

Google Analytics の管理画面 にログインし、右上の「アナリティクス設定」をクリックします。

analytics-settings

一番左の「アカウント」メニューの「ユーザー管理」をクリックします。

analytics-user

先ほど「クライアント ID」を作成したときに発行されたメールアドレスをユーザー登録します。権限は「表示と分析」にします。

analytics-user-add

Google Analytics のビュー ID をメモする

引き続き Google Analytics の管理画面で作業します。右側の「ビュー設定」をクリックします。

analytics-view

ビュー ID が表示されているのでメモしておきます。

analytics-view-info

「ビュー ID」は、以前は「プロファイル ID」と呼ばれていたようです。最近になって名前が変わった様子。API のマニュアルには「プロファイル ID」と書かれていたのであちこち探したのですが見つからず、小一時間を無駄にしました。

PHP から API を叩く

以上で準備が整いました。これまでの手順で、以下の情報が手元にあると思います。

  • クライアント ID
  • メールアドレス
  • 秘密鍵
  • ビュー ID

これらを使って Google Analytics API を実行します。API 実行に必要なライブラリは Google APIs Client Library for PHP からダウンロードできます。サンプルも同梱されています。

以下は 過去 1ヶ月 の PV 数 Top10 を表示するプログラムです。公式サンプルの google-api-php-client/examples/prediction/serviceAccount.php を参考にしました。ライブラリのバージョンは 0.6.7 です。

<?php
//google-analytics-api.php

require_once __DIR__ . '/src/Google_Client.php';
require_once __DIR__ . '/src/contrib/Google_AnalyticsService.php';

//クライアントID
define('CLIENT_ID', 'XXXXXXcag.apps.googleusercontent.com');
//メールアドレス
define('SERVICE_ACCOUNT_NAME', '@developer.gserviceaccount.com');
//秘密鍵
define('KEY_FILE', __DIR__ . '/XXXXXXXX-privatekey.p12');
//ビューID
define('PROFILE_ID', 'XXXXXXXX');


$client = new Google_Client();
$client->setApplicationName("Google Analytics PHP Starter Application");
$client->setClientId(CLIENT_ID);
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME,
    array('https://www.googleapis.com/auth/analytics'),
    file_get_contents(KEY_FILE)
));

//今日の日付
$today = date("Y-m-d");
//一ヶ月前の日付
$lastMonth = date("Y-m-d", strtotime("-1 month"));

$service = new Google_AnalyticsService($client);
$result = $service->data_ga->get(
    'ga:' . PROFILE_ID,
    $lastMonth, //開始日
    $today, //終了日
    'ga:pageviews',
    array(
        'dimensions'  => 'ga:pageTitle,ga:pagePath',
        'sort'        => '-ga:pageviews',
        'max-results' => '10' //件数
    )
);

print_r($result['rows']);

実行結果です。PV 数 Top10 の記事のタイトルと URL が配列で取得できます。この配列を加工すればアクセスランキングを作成できると思います。ファイルに出力するなり、DBに入れるなり好きにしてください。期間や取得件数を変えたい場合はオプションを変更すれば OK です。

$ php google-analyitcs-api.php

Array
(
    [0] => Array
        (
            [0] => タイトル1
            [1] => URL1
            [2] => PV数1
        )

    [1] => Array
        (
            [0] => タイトル2
            [1] => URL2
            [2] => PV数2
        )
    ...
)

ファイル構成はこんな感じ。秘密鍵は実行環境にアップロードしておいてくださいね。

├── XXXXXXX-privatekey.p12(秘密鍵)
├── google-analytics-api.php
├── src
│   ├── Google_Client.php
│   ├── auth
│   ├── cache
│   ├── config.php
│   ├── contrib
│   ├── external
│   ├── io
│   └── service
└── test
    ├── AllTests.php
    ...

当ブログのランキング表示について

当ブログでは、このプログラムを cron で定期的に実行し、取得した情報をファイルに出力、それを WordPress から読み込んでランキング表示をしています。バッチではなく WordPress からリアルタイムに実行しても良いのですが、当ブログのランキングはそんなに頻繁に変わるものではないので、サイト表示速度を考慮してバッチでランキング取得にしています。

具体的な方法は以下エントリにまとめました。
[WordPress] Google Analytics APIを使い人気記事ランキングを表示する

参考サイト

 ツイート 14  シェア 36  Google+1 0  Hatena 50