Google Analytics APIの使い方です。
ライブラリが頻繁に変更するからなのか分かりませんが、ネット上の情報が古くなっていることが多くて苦労したので、使えるようになるまでの方法をまとめておきます。
Google系のAPIは登録が最初にして最大の難関...
アカウントの作成とAPIの有効化
「Google Developers Console」にアクセスします。Google関連の各種APIを管理できる場所です。
→ https://console.developers.google.com/
プロジェクト作成
APIは、プロジェクト単位で管理します。何か1つプロジェクトを作りましょう。
作成場所は、左上に存在します。
すでにプロジェクトが存在する人は、右上の「+」ボタンから新しくプロジェクトを追加しましょう。初めてプロジェクトを作る人はこの画面がでないはずです。
プロジェクト名は何でもOKです。管理しやすい名前を入力しておきましょう。
認証情報作成
左のサイドメニューから「認証情報」を選択し、「サービスアカウントキー」を作成します。
「役割」はデータを見るだけなら「閲覧者」で構いません。操作するとかしたい場合は、オーナーとかにする必要があるかもしれませんが。
サービスアカウント名およびサービスアカウントIDは、先程作成したプロジェクトの「ID」を選択してください。おそらくプルダウンで選べるようになるはずですが、選べない場合はコピペで入力しましょう。IDの確認場所は、プロジェクト作成時の場所と同様です。
作成するとJSONファイルがダウンロードされます。大切なファイルですのでなくさないようにしましょう。保存できるタイミングは作成時だけなので、なくした場合は削除して新しく作り直してください。
中身はこんな感じです。
Analytics Reporting APIを有効化
デフォルトでは無効化されているので有効化してあげましょう。
サイドメニューのライブラリを選択して、「Analytics」で検索。「Analytics Reporting API」を選択します。
右上あたりに「有効化する」ボタンがあるはずです。※ わたしの画像は有効化されている状態になります。
ここまでで管理画面側での作業は完了です!
Google Analyticsとの紐付け
APIからGoogle Analyticsにアクセスするための権限を追加してあげる必要があります。
Google Analyticsの管理画面から連携したいビューの「ユーザー管理」を選択します。「権限を付与するユーザー」に作成したサービスアカウントのメールアドレスを入力してあげましょう。メールアドレスはダウンロードしたJSONファイルの中にあります。
ビューのアクセス権限はデータを取得するだけなら「表示と分析」でOKです。
ライブラリのダウンロードしてコーディング
Google Analytics APIを利用するためのライブラリを取得しましょう。
GitHub上にソースが置いてあるのですが、ここからダウンロードすると(わたしは)上手く使えなかったので、手順に記されているとおりにComporserを使ってダウンロードすると無難かと思います。
→ https://github.com/google/google-api-php-client
スクロールして「Installation」の項目あたりを進めていってください。
コマンド操作が必要になるだけで、一気に中級者っぽいレベルに上がりますね・・・。他に方法分からなくて、すみません。
composer require google/apiclient:^2.0
WindowsでComposerを使う方法は以下で紹介しています。XAMPPとComposerインストールするだけです!
→ WindowsにComposerをインストールする!
上手くダウンロードできれば以下のような階層のフォルダがダウンロードされるはずです。
このライブラリを使って、指定した期間のセッションを取得するコードを書いていきます。
セッションを取得するコード(PHP)
公式を参考に作成していきましょう!
※ 公式の情報が古く最新のライブラリに対応できていない箇所があるのでいくつか修正いれています。
→ はじめてのアナリティクス Reporting API v4: サービス アカウント向け PHP クイックスタート
コード書く前に以下のファイルと値を確認しておいてください。
【必要となるファイル】
- ダウンロードしたJSONファイル
- ダウンロードしたvendorフォルダ一式
【必要となる値】
- Google AnalyticsのビューID
Google Analytics管理画面から確認できます。
以下のコードの<REPLACE_WITH_VIEW_ID>
に入力してあげてください。
<?php
require_once __DIR__ . '/vendor/autoload.php';
$analytics = initializeAnalytics();
$response = getReport( $analytics );
printResults( $response );
function initializeAnalytics() {
$KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';
$client = new Google_Client();
$client->setApplicationName( "Hello Analytics Reporting" );
$client->setAuthConfig( $KEY_FILE_LOCATION );
$client->setScopes( ['https://www.googleapis.com/auth/analytics.readonly'] );
$analytics = new Google_Service_AnalyticsReporting( $client );
return $analytics;
}
function getReport( $analytics ) {
$VIEW_ID = "<REPLACE_WITH_VIEW_ID>";
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate( "30daysAgo" );
$dateRange->setEndDate( "yesterday" );
// 以下のような日付指定も可
// $dateRange->setStartDate( "2016-09-27" );
// $dateRange->setEndDate( "2017-07-27" );
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression( "ga:sessions" );
$sessions->setAlias( "sessions" );
$dimention = new Google_Service_AnalyticsReporting_Dimension();
$dimention->setName( 'ga:landingPagePath' );
$orderby = new Google_Service_AnalyticsReporting_OrderBy();
$orderby->setFieldName( "ga:sessions" );
$orderby->setOrderType( "VALUE" );
$orderby->setSortOrder( "DESCENDING" );
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId( $VIEW_ID );
$request->setDateRanges( $dateRange );
$request->setMetrics( array( $sessions ) );
$request->setDimensions( array( $dimention ) );
$request->setOrderBys( $orderby );
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests( array( $request) );
return $analytics->reports->batchGet( $body );
}
function printResults( $reports ) {
$report = $reports[0];
$rows = $report->getData()->getRows();
for ( $rowIndex = 0; $rowIndex < count( $rows ); $rowIndex++ ) {
$row = $rows[ $rowIndex ];
$dimensions = $row->getDimensions();
$metrics = $row->getMetrics();
$session = $metrics[0]->getValues()[0];
echo '<p style="margin-bottom: 12px;">';
echo $dimensions[0] . ' session:' . $session;
echo '</p>';
}
}
コメントほぼないコードですみません。。最終的なフォルダ構造としては以下のような感じです。
実行結果としては、当ブログだったら以下のような感じです。(数字はイメージ)
/archives/11021 session:133434
/archives/11011 session:125643
/archives/11000 session:94633
/archives/10992 session:85641
少し解説
$KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';
ダウンロードしたjsonファイルを指定する場所です。公式にファイル名を合わせて変更しましたが各々のファイル名を指定していただいても構いません。
$VIEW_ID = "<REPLACE_WITH_VIEW_ID>";
Google AnalyticsのビューIDを指定します。
getReport( $analytics )
関数内
変数名でなんとなく分かると思いますが、マトリックスやディメンション、日付の範囲、ソートなどを設定しています。
どういった値を指定できるかは、以下の公式ドキュメントを参考にしてください。
→ Dimensions & Metrics Explorer
※ こっちの方が分かりやすいです。
→ Reporting API v4 の機能のサンプル
つまづいたポイント
同じようなエラーで悩んでいる人がこの記事で解決すればいいなと思い、あえて解説します。エラーメッセージごとに紹介。
Fatal error: Uncaught exception ‘Google_Service_Exception’ with message
上記のメッセージは
- $VIEW_ID
- $KEY_FILE_LOCATION
が正しくない場合に起こるようです。
Fatal error: Class ‘Google_Auth_AssertionCredentials’ not found
new Google_Auth_AssertionCredentials()
はもう使えないみたいですね。代わりにsetAuthConfig()
を使ってください。古いコードだと前者が使われていたりします。
1日の使用上限
Quota Error: profileId XXXXXXXX(VIEW ID) has exceeded the daily request limit.
Google Analytics APIは1日に使える上限が決まっていました。
→ API リクエストの制限と割り当て
上限を超えても「太平洋標準時の午前0時に更新」されて、また使えるようになりますのでご安心を。
まとめ
Google Analytics APIの使い方でした。
- アカウントの作成とAPIの有効化
- Google Analyticsとの紐付け
- ライブラリのダウンロード
- コーディング
といった流れです。手順が多くて大変ですね。つまずくこともあると思いますが、1つ1つ解決していき自分の手のひらで操れるようになると楽しいですよ。
応用すればWordPressに人気記事を反映させたりできます。プラグインを使うより正確で拡張性もあるので、ぜひ使いこなせるようにマスターしましょう!
おわり
Google Analytics APIの使い方でした。Google先生はすぐにUI変えたりするので困りものです。去年の手順記事が古くて使い物にならなくなっていたりするので…。(わたしも頑張って更新していきます)
現時点(2018年1月)で最新verだと思いますが、もし手順通りにできない場合は、お問い合わせいただけますと幸いです。