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アカウントでログインします。
④:「アカウント」をクリックして、「新しいアカウントを作成」をクリックします。

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

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

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

⑧:次に取得したトラッキングコードをwww.example.com配下の全てのページに貼り付けます。
貼り付ける場所は<body>タグ直下に貼り付けます
4.プロファイルIDの確認
PHPプログラムからデータを取得するため、プロファイルIDを覚えておく必要があります。
以下の手順でプロファイルIDを確認します。
①:GoogleAnalysticsサイトを開きます。
https://analytics.google.com/
②:グローバルメニューの「すべてのウェブサイトのデータ」をクリックします。

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

5.サービスアカウントキーの発行
①:GoogleDeveloperConsoleページにアクセスします。
https://code.google.com/apis/console/
②:プロジェクトを作成します。
・「プロジェクトを作成」を押します。

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

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

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

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

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

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

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

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

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

以上サービスアカウントキーの発行になります。
6.GoogleAnalytics側の準備
ここでは「5.サービスアカウントキーの発行」の⑦で覚えたサービスアカウントIDをGoogleAnalytics側で許可をする設定をします。
①:GoogleAnalyticsを開きます。
https://analytics.google.com/
②:グローバルメニューの「すべてのウェブサイトのデータ」をクリックします。

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

以上でGoogleAnalytics側の準備ができました。
7.google-api-php-clientプログラム取得方法
GoogleAnalyticsからデータを取得するため、google-api-php-clientというライブラリを使います。
バージョン1.1.7を使います。
①:以下URLを開きます。
https://github.com/google/google-api-php-client
③:1.1.7の「Source code(zip)」をクリックしてzipファイルをダウンロードします。

ダウンロードした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のページビューデータを取得できるようになりました。
応用として、ページビューの一覧ページを作成する場合に使える機能かと思いますので、どうぞ参考にしてください。




