

今やWebサイト運営に欠かせないものとなっている Google Analytics によるアクセス解析。このサービスに蓄積されたデータをつかってサイトのアクセスランキングをつくることになったので、その時調べたことをメモしておきます。
## Google Cloud Platformでプロジェクトを作成する
まず任意のGoogleIDでログインします。それから、Googleが用意しているAPIをつかいますので Google Cloud Platform へ。
https://console.cloud.google.com/
「新しいプロジェクト」を作成します。
プロジェクト名:test-project(任意)
プロジェクトID:test-project-******(任意)
場所:組織なし
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0001.png
次に左メニューの「APIとサービス」から「ライブラリ」を選択します。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0002.png
検索窓で今回の案件で使用する「Google Analytics Reporting API」を検索し、有効化してください。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0004.png
## 認証情報の作成
左メニューの「認証情報」をクリックし、「+認証情報を作成」の「サービスアカウント」を選択します。「①サービスアカウントの詳細」に、サービスアカウント名とサービスアカウントを入力し、先程設定したプロジェクト名を入れて「作成して続行」します。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0006.png
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0007.png
「②このサービスアカウントにプロジェクトへのアクセスを許可する」に移動するので、「ロールを選択:Project 閲覧者」を選択します。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0008.png
「③ユーザーにこのサービス アカウントへのアクセスを許可」には、なにも入力せずに「完了」してください。
## 秘密鍵の作成
サービスのユーザー(サービスアカウント@サービスアカウンID.iam.gserviceaccount.com)が作成されるので、それをクリックします。それから、上メニューの「キー」 → 「鍵を追加」 → 「新しい鍵の作成」 → 「JSON」→「作成」の順に選択します。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0009.png
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0010.png
秘密鍵のJSONファイルが作成されるのでダウンロードしてください。
## Googleアナリティクスにサービスを登録する
[Googleアナリティクス](https://analytics.google.com/analytics/web/)に移動します。対象となるサイトのGoogleアナリティクスへの登録は済ませてあるものとします。
管理ページのプロパティのブロックにある「プロパティのアクセス管理」で、ユーザーの追加を選択して、Google Cloud Platformで作成したサービスユーザー(サービスアカウント@サービスアカウントID.iam.gserviceaccount.com)を「閲覧者」で追加します。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0011.png
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0013.png
管理画面に戻ってビューのブロックにある「ビューの設定」を開きます。
そこにある「ビューID」をメモっておいてください。これでGoogleアナリティクスでの設定作業は終了です。
http://www.chaordic.co.jp/memorandum/user/chaordicdesign/img/34/0012.png
## アクセスランキングのJSONを取得する
サーバーのPHPのバージョンに合ったライブラリをクライアントライブラリからダウンロードします。ここでは「google-api-php-client--PHP7.4.zip」を使用することとします。
https://github.com/googleapis/google-api-php-client/releases/tag/v2.11.0
APIをつかってアクセス・ランキング情報を取得するPHP「get-ranking.php」を用意します。下記のサンプルは[ココ](https://www.bnote.net/blog/google_analytics_api_pv.html)を参考にさせていただきました。
このサンプルでは、昨日から1週間の、アクセス件数(ページビュー)が上位10件のページタイトルを含むデータを取得してJSONとして出力します。
get-ranking.php
// GoogleAPIの「PHP Client Library」を読み込む
require_once './google-api-php-client--PHP7.4/vendor/autoload.php';
$analytics = initializeAnalytics();
$response = getReport($analytics);
header("Content-Type: application/json; charset=UTF-8");
echo json_encode($response, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
/*
* 初期設定
*/
function initializeAnalytics(){
$KEY_FILE_LOCATION = __DIR__ . '/test-project-*****.json'; // (秘密鍵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;
}
/*
* getReport
*/
function getReport($analytics) {
$VIEW_ID = "(ビューIDを設定)";
/* データを取得する期間(DateRange)
setStartDate() 取得する期間の始まり
setEndDate() 取得する期間の終了
*/
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange -> setStartDate("8daysAgo");
$dateRange -> setEndDate("yesterday");
/* 指標(Metrics)
setExpression()
ga:avgSessionDuration | 平均セッション時間
ga:avgTimeOnPage | 平均ページ滞在時間
ga:bounceRate | 直帰率
ga:sessions | セッション数
ga:pageviews | ページビュー数
ga:percentNewSessions | 新規セッション率
ga:pageviewsPerSession | ページ/セッション
ga:goalXXCompletions | 目標XXの完了数
ga:pageValue | ページの価値
*/
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions -> setExpression("ga:pageviews");
$sessions -> setAlias("pageviews");
/* 軸(Dimension)
setName()
ga:date | 日付
ga:yearMonth | 年月
ga:sourceMedium | 参照元/メディア
ga:landingPagePath | ランディングページ
ga:pagePath | ページ
ga:pageTitle | ページタイトル
*/
$dim_path = new Google_Service_AnalyticsReporting_Dimension();
$dim_path -> setName('ga:pagePath');
$dim_title = new Google_Service_AnalyticsReporting_Dimension();
$dim_title -> setName('ga:pageTitle');
/* 並べ替え(OrderBy)
setSortOrder()
SORT_ORDER_UNSPECIFIED | 並べ替え順を指定しない(昇順)
ASCENDING | 昇順
DESCENDING | 降順
*/
$orderBy = new Google_Service_AnalyticsReporting_OrderBy();
$orderBy -> setFieldName('ga:pageviews');
$orderBy -> setSortOrder('DESCENDING');
/* APIリクエストのまとめ(ReportRequest)
setViewId() GAのビューID
setDateRanges() 取得期間
setMetrics() 指標
setDimensions() 軸
setOrderBys() 並べ替え
setPageSize() 取得件数
*/
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request -> setViewId($VIEW_ID);
$request -> setDateRanges($dateRange);
$request -> setMetrics(array($sessions));
$request -> setDimensions(array($dim_path, $dim_title));
$request -> setOrderBys($orderBy);
$request -> setPageSize(10);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body -> setReportRequests(array($request));
return $analytics -> reports -> batchGet($body);
}
以下の構成でサーバーにアップロードし、ブラウザからget-ranking.phpを叩いてみてください。アクセスランキングの上位10位までのJSONデータが出力されているはずです。
google-api-php-client--PHP7.4(フォルダ)
test-project-*******.json(秘密鍵JSON)
get-ranking.php
今回はJSONの取得までのメモです。運営にあたっては、定期的にそのJSONを取得し、フロント・ページに出力するなどの仕様が必要になることと思います。このような機能をWEBサイトへ実装が必要な時はご相談ください。
2022-02-07 16:06:19
ソースコードは自由にお使いください。また、何らかの不利益が生じたとしても一切責任を負いません。