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を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <?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のページビューデータを取得できるようになりました。
応用として、ページビューの一覧ページを作成する場合に使える機能かと思いますので、どうぞ参考にしてください。