GoogleAnalyticsのページビュー数をPHPで取得してみる

こんにちは、システムエンジニアの今井です。

これまで3回Googleカレンダーの情報をPHPで扱うことに関するブログを書いてきましたが、
今回はGoogleAnalyticsのページビュー数をPHPで取得してみる方法について書いてみたいと思います。

ちなみに、過去書きましたGoogleカレンダーについてのブログは以下になります。

 

1.今回してみること

  • www.example.comの各ページのページビュー数をPHP経由でGoogleAnalyticsから取得する
  • 取得したデータはCSVとして書き出す

※www.example.comは仮のURLです。実際に利用する場合は管理しているサイトのURLを入れてください。

 

2.用意するもの

PHPからGoogleAnalyticsの情報を取得するために以下のものが必要になります。

  • トラッキングコード
  • プロファイルID
  • サービスアカウントキー
  • google-api-php-clientプログラム

 

3.トラッキングコードの発行

GoogleAnalyticsに計測させるため、www.example.com用のトラッキングコードの発行を行います。
後ほどここで取得したコードをwww.example.comサイト内の全てのHTMLに貼り付けます。

※トラッキングコードをHTML内に貼り付けた直後はアクセスビュー情報がGoogleAnalytics側に溜まってませんので、ある程度の期間(1週間ほど)待ってから確認することをおすすめします。

①:GoogleAnalysticsサイトを開きます。
https://analytics.google.com/

②:ログインします。
 Googleアカウントでログインします。

③:左メニューの「管理」をクリックします。
ws000140

④:「アカウント」をクリックして、「新しいアカウントを作成」をクリックします。
ws000141

⑤:サイト情報を入力します。
以下の情報を入力したら「トラッキングIDを取得」を入れます。
・トラッキングの対象
 「ウェブサイト」を選択します。
・アカウント名
 ここでは「www.example.com」と入れています。
・ウェブサイトの名前
 ここでは「www.example.com」と入れています。
・ウェブサイトのURL
 ここでは「www.example.com」と入れています。
・業種
 御社の業種を選択してください。
・レポートのタイムゾーン
 日本であれば「日本」を選択してください。
・その他のチェックボックス
 入れたままにしておきます。
ws000142

⑥:次に利用規約が出ますので、「日本」を選択して利用規約を確認して問題なければ「同意する」を選択してください。
ws000143

⑦:トラッキングコードが表示されますのでテキストエディターなどに貼り付けて保存して覚えておきます。
ws000144

⑧:次に取得したトラッキングコードをwww.example.com配下の全てのページに貼り付けます。
  貼り付ける場所は<body>タグ直下に貼り付けます

 

4.プロファイルIDの確認

PHPプログラムからデータを取得するため、プロファイルIDを覚えておく必要があります。
以下の手順でプロファイルIDを確認します。

①:GoogleAnalysticsサイトを開きます。
https://analytics.google.com/

②:グローバルメニューの「すべてのウェブサイトのデータ」をクリックします。
ws000145

③:以下の順番でクリックするとプロファイルIDが確認できます。
・「アカウント」は「www.example.com」をクリック
・「プロパティ」は「www.example.com」をクリック
・「ビュー」の「すべてのウェブサイトのデータ」の下に表示される数字がプロファイルIDになります。
ws000146

 

5.サービスアカウントキーの発行

①:GoogleDeveloperConsoleページにアクセスします。
https://code.google.com/apis/console/

②:プロジェクトを作成します。
・「プロジェクトを作成」を押します。
ws000147

③:新しいプロジェクトページでプロジェクト名を入力して「作成」ボタンをクリックします。
※ここでは「get-google-analytics」というプロジェクト名にしました。
ws000148

④:作成が終わると一覧画面で作成したプロジェクトが表示されます。今回作成した「get-google-analytics」をクリックします。
ws000149

⑤:左メニューの「サービスアカウント」をクリックして次に「サービスアカウントを作成」をクリックします。
ws000150

⑥:以下の赤枠の箇所を入力します。入力して「作成」ボタンを押すとJSONファイルがダウンロードされますので大事に保管してください。後ほどこのJSONファイルは使います。
・「サービスアカウント名」はここでは「get-google-analytics-user」としましたが、使いやすい名前で設定してください。
・「サービスアカウントID」は自動入力されます。
・「新しい秘密鍵の提供」の「キーのタイプ」は「JSON」を指定してください。
ws000151

⑦:ダウンロードが終わると「サービスアカウント」の画面に戻ります。そこに表示されている「サービスアカウントID」を覚えておいてください。
※以下の赤枠の箇所が該当の箇所になります。
ws000152

⑧:作成した「get-google-analytics」プロジェクトに対してGoogleAnalyticsAPIの割当を行います。
  画面左上のハンバーガーメニューをクリックしてメニューを表示して、「APIとサービス」をクリックします。
ws000153

⑨:左メニューの「ライブラリ」をクリックしてライブラリページを開きます。
ws000154

⑩:検索窓に「analytics」と入力すると「Analytics API」が表示されますので「Analytics API」をクリックします。
ws000155

⑪:「有効にする」をクリックして、「Analytics API」を有効にします。
ws000156

以上サービスアカウントキーの発行になります。

 

6.GoogleAnalytics側の準備

ここでは「5.サービスアカウントキーの発行」の⑦で覚えたサービスアカウントIDをGoogleAnalytics側で許可をする設定をします。
①:GoogleAnalyticsを開きます。
https://analytics.google.com/

②:グローバルメニューの「すべてのウェブサイトのデータ」をクリックします。
ws000145

③:以下の順番でクリックしてビューを開きます。
ws000157

④:画面左下の「管理」をクリックします。
ws000158

⑤:「ユーザ管理」をクリックします。
ws000159

⑥:「権限を付与するユーザー」の欄に「5.サービスアカウントキーの発行」の⑦で覚えた「サービスアカウントID」を入力し、「追加」ボタンを押します。
ws000161

以上でGoogleAnalytics側の準備ができました。

 

7.google-api-php-clientプログラム取得方法

GoogleAnalyticsからデータを取得するため、google-api-php-clientというライブラリを使います。
バージョン1.1.7を使います。
①:以下URLを開きます。
https://github.com/google/google-api-php-client

②:releasesという箇所をクリックします。
16

③:1.1.7の「Source code(zip)」をクリックしてzipファイルをダウンロードします。
17

ダウンロードしたzipファイルはローカルPCに保存しておきます。
※後ほどこのzipファイルを使います。

 

8.PHPでGoogleAnalyticsのページビューを取得する

これでようやく前提準備が整いました。以下の手順でPHPからGoogleAnalyticsのページビュー情報を取得します。
取得したデータはCSVとして出力します。
①:今回作成するプログラムの仕様
・実行させるプログラムは /var/www/html/index.php に設置
・取得するデータにはURLとサイトタイトルとそのページビュー数が含まれます
・取得するデータは指定した月のページビューを取得する
・取得するデータの年月の指定はブラウザ上で index.php?date=yyyymm と行う
・取得したデータはCSVとして保存する
・CSVの書き出し先は /var/www/html/csv とします。
 ※このCSVディレクトリに対して書き込み権限を付与してください。

②:環境情報
・「7.google-api-php-clientプログラム取得方法」で取得したプログラムは/var/www/html/google-api-php-client以下に保存します。
・「5.サービスアカウントキー取得方法」で取得したjsonファイルは /var/www/html/json/hoge.json として設置します。
・GoogleAnalytics情報を取得するPHPプログラムは /var/www/html/index.php として作成します。

③:GoogleAnalytics情報を取得するPHPプログラム
※ここで「4.プロファイルIDの確認」の③で取得したプロファイルIDを使います。

<?php
/**
 * GooglaAnalyticsの計測結果を取得するプログラム
 *
 */

// yyyymmの形でない場合はエラーとします
$target_yyyymm = $_GET['date'];
if (strlen($target_yyyymm)!=6) {
    echo 'error';
    exit;
}

// プロファイルIDを設定します。
define('PROFILE_ID', 'ここに取得したプロファイルIDを入れます');
// JSONファイルのパスを設定します。
define('JSON_PATH', __DIR__.'/json/hoge.json');
// CSV書き出し先指定
define('CSV_DIR', __DIR__.'/csv');

// google-api-php-clientを呼び出します。
require_once __DIR__.'/google-api-php-client/src/Google/autoload.php';
// 念のためタイムゾーンの設定をします。
date_default_timezone_set('Asia/Tokyo');

$ymd = sprintf("%s01", $target_yyyymm);

$json = file_get_contents(JSON_PATH);
$json = json_decode($json, true);

$client_email = $json['client_email'];
$private_key  = $json['private_key'];

$scopes = array(Google_Service_Analytics::ANALYTICS);
$credentials = new Google_Auth_AssertionCredentials(
    $client_email,
    $scopes,
    $private_key
);

$client = new Google_Client();
$client->setApplicationName("Google Analytics PHP API");
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion();
}
$analytics = new Google_Service_Analytics($client);

$date1 = date('Y-m-01', strtotime($ymd));
$date2 = date('Y-m-t',  strtotime($ymd));

$data = $analytics->data_ga->get(
    'ga:'.PROFILE_ID, // プロファイルIDを記入
    $date1,           // 計測結果開始日を入力
    $date2,           // 計測結果終了日を入力
    'ga:pageviews',   // ページビュー数で取得
    array(
        'dimensions'=>urlencode('ga:pageTitle,ga:pagePath'),    // タイトルをパスを取得する
        'sort'      =>urlencode('-ga:pageviews'),               // ページビュー数で降順ソート
    )
);

// 全ページビュー数を取得
$page_view_rows = $data->rows;

// 全ページビュー用CSV作成
$filename1 = CSV_DIR."/pageviews_{$target_yyyymm}.csv";
if (file_exists($filename1)) {
    unlink($filename1);
}
// CSVファイルはutf8で吐き出すのでBOMコードを入れてExcelで文字化けすることなくCSVファイルを表示させるようにします。
file_put_contents($filename1, "\xef\xbb\xbf", FILE_APPEND);
// CSVファイルの1行目にタイトルを入れます
file_put_contents($filename1, "title,url,pageviews".PHP_EOL, FILE_APPEND);
$sum1 = 0;
foreach ($page_view_rows as $row) {
    $sum1 += intval($row[2]);
    $data = array();
    $data[] = '"'.$row[0].'"';
    $data[] = '"'.$row[1].'"';
    $data[] = '"'.$row[2].'"';
    file_put_contents($filename1, implode(',', $data).PHP_EOL, FILE_APPEND);
}
// 最後の行に全ページビュー数の計を表示します。
file_put_contents($filename1, '"","計",'.$sum1.PHP_EOL, FILE_APPEND);

④:上記のプログラムをブラウザで実行するとcsvディレクトリ内に取得したデータが作成されます。
  例えば、2017年5月のデータを取得したいときは index.php?date=201705 とブラウザに入れます

 

9.まとめ

以上でPHPからGoogleAnalyticsのページビューデータを取得できるようになりました。
応用として、ページビューの一覧ページを作成する場合に使える機能かと思いますので、どうぞ参考にしてください。

Pocket