【2019最新版】アナリティクス APIでアクセス数のランキングを表示
システム開発部のヤマモトです。
先日、当コーポレートサイト下部にGoogleAnalyticsのアナリティクスAPIを利用したブログのアクセス数ランキングを追加実装しました!
実装した内容を書き残します。
目次
アナリティクスAPIとは?
アナリティクスAPIとはGoogleが提供するGoogleAnalyticsのAPIサービスで、GoogleAnalyticsで収集したアクセス解析情報を基に任意のパラメータ、指標を設定し外部サイトから情報を取得できるサービスです。
例えば今回実装した内容ですと、GoogleAnalyticsで収集している弊社コーポレートサイト内ブログ記事の過去7日間のアクセス数のデータを取得しています。
アナリティクスAPIを有効化する
まず、アナリティクスAPIを利用するにはGoogleApisのプロジェクト内のサービスアカウント対してクライアントIDを設定する必要があります。
サービスアカウントの追加からサービスアカウントの追加をします。
ページ上部サービスアカウントを作成ボタンから「サービスアカウント名」「サービスアカウントID」を入力し、キーの作成(オプション)項目で「JSON形式」を選択してください。
入力が完了すると一覧画面に入力した内容でサービスアカウントが追加されるので操作欄のメニューボタンから「鍵を作成」を選択し「JSON形式」で操作を進めると連携用の秘密鍵がダウンロードされます。
サービスアカウントIDでGoogle アナリティクス アカウントの追加
作成したサービスアカウントのIDがメールアドレス形式(xxxxx@xxxxxx.iam.gserviceaccount.com)になっていますのでこちらのメールアドレスでGoogleAnalyticsへアカウントを追加してください。
Googleクライアントライブラリをインストールする
必要なライブラリをインストールします、今回はComposerを利用してインストールを進めます。
composer require google/apiclient:^2.0
サンプルコードの実行
サンプルコードが公式で配布されていますので下記リンクのコードを保存します。
HelloAnalytics.php
次に、サービスアカウントの鍵を生成時にダウンロードしたjsonファイルをサンプルコードと同一のディレクトリに移動し「service-account-credentials.json」にリネームします。
保存ディレクトリに移動したうえで下記のコマンドを実行すると認証済みユーザーの最初のGoogleアナリティクスビューの名前と、過去7日間の合計セッション数が出力されます。
php HelloAnalytics.php
ランキング情報を取得してみる
サンプルコードで過去7日間の合計セッション数が取得できましたので、次に過去7日間の記事情報をセッション数順に個別出力するように改変します。
require_once __DIR__ . '/vendor/autoload.php';
$analytics = initializeAnalytics();
$response = getReport( $analytics );
print_r($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 = "xxxxxxxx";
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate( "8daysAgo" );
$dateRange->setEndDate( "yesterday" );
$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 );
}
$VIEW_IDにはアナリティクス管理画面のビューの設定から確認できるビューIDを入力してください。
上記コードを実行すると過去7日間のセッション数順で記事URLとセッション数の配列が取得できるかと思います。
WordPressへの対応
WordPressには記事URLから記事IDを取得できるurl_to_postidという便利な関数が用意されていますので、取得したURLからID情報を取得してWP_Query等のループにセットすることで簡単にランキング情報を表示することができます。
以上、アナリティクスAPIを使用したランキング情報の取得方法でした。
WordpressにはWordPress Popular Posts等便利なプラグインが開発されていますが、どうしても内部でデータを持つ分重くなりがちです。
その点アナリティクスAPIを利用した実装は外部GoogleAnalyticsのデータを活用し、かつカスタマイズ性の高いスマートな手法として非常に有用な選択肢だと感じました。