毎月ウェブサイトごとに Google Analytics の解析データをエクセルにまとめる作業があるのですが、サイト数が増えてくると時間もかかり大変な(めんどくさい)作業になってきます。Google Analytics API を使えば、手製のプログラムから解析データを取得できるので作業を自動化できそうです。そこで今回は、現時点(2019年3月)での最新バージョン Google Analytics Reporting API v4 のセットアップから、PHPで解析データを取得するまでの手順をまとめてみました。
Google Analytics API の有効化
まずはじめに Google API コンソール にログインして Google Analytics API を有効にします。
プロジェクトの作成
Google Analytics API を有効化する下準備として「プロジェクト」を作成する必要があります。(プロジェクトの作成は Google の開発系サービスを使うための作法のようなものですので、あまり深く考える必要はありません)
「プロジェクトの選択」をクリックします。Google Cloud Platform(Googleが提供しているクラウドサービス)を利用されている方なら、普段使っているプロジェクトが表示されていると思います。
「新しいプロジェクト」をクリックします。
適当なプロジェクト名を入力して「作成」をクリックします。
プロジェクトが作成されました。続いて Google Analytics Reporting API v4 を有効にします。
Google Analytics Reporting API v4 の有効化
左メニューの「ライブラリ」をクリックします。
「Analytics」で検索して「Google Analytics Reporting API」をクリックします。(となりの「Analytics API」は古いバージョンです。間違えないようにしましょう)
「有効にする」をクリックします。
以上で Google Analytics Reporting API v4 が有効化されました。
認証情報の作成
上の画面にも書かれていますが、Google Analytics Reporting API v4 を利用するには認証情報が必要になりますので、続けて認証情報を作成します。
左メニューの「認証情報」>「+認証情報を作成」をクリックします。
API を呼び出す場所「その他の UI」を選択し、「アプリケーションデータ」にチェックを入れたら「必要な認証情報」をクリックします。
適当なサービスアカウント名とサービスアカウントID(自動で入力されます)を入力して、役割「Project > 閲覧者」を選択したら「次へ」をクリックします。(キーのタイプは「JSON」のままにしておきます)
秘密鍵などの認証情報がJSON形式のファイルでダウンロードされます。秘密にして管理しましょう。(これを「鍵ファイル」と呼ぶことにします)
ダウンロードした鍵ファイルは、適当な名前(なんでも構いません)を付けておきます。
mv 'GA API TEST-c6ed6fa1574a.json' service-account-credentials.json
もしこの鍵ファイルを無くした場合は、Google API コンソール左上の「≡」ハンバーガーメニュー >「IAMと管理」>「サービスアカウント」から、新しい鍵ファイルを作成することができます。(無くした古い鍵は編集画面で削除しておきましょう)
Google Analytics ビューへの権限追加とIDのメモ
先ほどダウンロードした鍵ファイルの中に、サービスアカウント(APIを使うため専用のアカウント)のメールアドレスがありますので確認しておきます。
grep client_email service-account-credentials.json
"client_email": "test-753@ga-api-test-233919.iam.gserviceaccount.com", ←サービスアカウントのメールアドレス
ビューへの権限追加
上で確認したサービスアカウントのメールアドレスを、解析データを取得したい Google Analytics ビューのユーザーに追加します。
Google Analytics の管理画面のビューの列にある「ユーザー管理者」をクリックします。
右上の「+」>「ユーザーを追加」を選択します。
先ほど確認したサービスアカウントのメールアドレスを入力し「追加」をクリックします。(権限は「表示と分析」のみでOKです)
以上で Google Analytics ビューにサービスアカウントが追加されました。
ビューID のメモ
Google Analytics の管理画面に戻って、「ビューの設定」をクリックします。
ビューID をメモしておきます。(後ほど解析データを取得するプログラム内で使います)
長くなりましたが、以上で Google Analytics Reporting API v4 を使う準備が整いました。続いてPHPプログラムから解析データを取得してみましょう。
PHPプログラムから解析データを取得
Google API クライアントライブラリのダウンロード
PHP用の Google API クライアントライブラリを Google の GitHub からダウンロードします。
https://github.com/googleapis/google-api-php-client/releases/latest
Composer を使ってダウンロードすることもできます。
composer require google/apiclient:^2.0
PHP サンプルプログラム
ダウンロードした「Google API クライアントライブラリ」と「鍵ファイル」、これから作成する PHPサンプルプログラムを同じディレクトリにまとめておきます。
ls -1 work/ google-api-php-client-2.2.2 service-account-credentials.json sample.php ←これから作成するPHPサンプルプログラム
下は月間のPVとセッション数とユーザー数を取得するPHPのサンプルプログラムです。
sample.php
<?php // Google API クライアントライブラリの読込み require_once __DIR__ . '/google-api-php-client-2.2.2/vendor/autoload.php'; // 鍵ファイルのパス $key_file_location = __DIR__ . '/service-account-credentials.json'; // ビューID $view_id = '<メモしたビューID>'; // 認証処理 $client = new Google_Client(); $client->setApplicationName('sample'); $client->setAuthConfig($key_file_location); $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); $analytics = new Google_Service_AnalyticsReporting($client); // データを取得する期間 $dateRange = new Google_Service_AnalyticsReporting_DateRange(); $dateRange->setStartDate('2019-02-01'); $dateRange->setEndDate('2019-02-28'); // 取得するメトリクスの指定 // https://developers.google.com/analytics/devguides/reporting/core/dimsmets // PV $pageviews = new Google_Service_AnalyticsReporting_Metric(); $pageviews->setExpression('ga:pageviews'); // セッション $sessions = new Google_Service_AnalyticsReporting_Metric(); $sessions->setExpression('ga:sessions'); // ユーザー $users= new Google_Service_AnalyticsReporting_Metric(); $users->setExpression('ga:users'); // リクエストの作成 $request = new Google_Service_AnalyticsReporting_ReportRequest(); $request->setViewId($view_id); $request->setDateRanges($dateRange); $request->setMetrics(array($pageviews, $sessions, $users)); // リクエスト実行 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); $body->setReportRequests(array($request)); $reports_obj = $analytics->reports->batchGet($body); // オブジェクトを配列変数に変換 $reports_array = json_decode(json_encode($reports_obj), true); var_dump($reports_array['reports'][0]['data']['totals'][0]);
参考資料:はじめてのアナリティクス Reporting API v4: サービス アカウント向け PHP クイックスタート
サンプルプログラムの実行結果
php sample.php array(1) { ["values"]=> array(3) { [0]=> string(5) "93862" [1]=> string(5) "78624" [2]=> string(5) "63449" } }
おわりに
Google Analytics Reporting API v4 では、ライフタイムバリュー、コホート、高度なセグメントレポートなど複雑なデータを取得できるそうです。これまで手作業でやっていた集計作業も自動化できそうですね。
コメント