Googleアナリティクスのapiを使ってWordPressのPVなどのアクセスデータを取得しよう

WEB制作

投稿日:

よく記事のPVやアクセス数順にランキング形式でサイドバーなどに表示させているブログやウェブサイトをご覧になったことがあるかと思います。

正直な話、JetPack辺りのプラグインを使えば実装も容易なのですがせっかくなので勉強を兼ねて今回はプラグインは使わずにGoogleのアクセス解析ツール「アナリティクス」のAPIを使ってみました。
※長くなる前提なのでサクッと実装したい方はカスタムフィールドでPVをカウントするか、プラグインを使いましょう!

以下のGoogleの公式チュートリアルに則って進めて行きます。

はじめてのアナリティクス API: サービス アカウント向け PHP クイックスタート

また、前提条件として既にGoogleのアカウントは作成済み、アナリティクスも利用中の想定となります。

Google APIコンソールからプロジェクトを作成しAPIを有効化

セットアップツールが用意してあるのでまずはこちらにアクセスして必要項目を入力します。

Google APIコンソールセットアップツール

セットアップ画面

上記のような画面が出ると思いますが、画面の指示通りに進めて行きます。
続行を押して進むと遷移に少し時間がかかりますが、この間にAPIが有効化されます。

APIが有効化される

APIの有効化が確認できたら認証情報に進みましょう。

プロジェクトへの認証情報の追加

必要な認証情報の種類を調べる

認証情報設定

APIを呼び出す場所、アクセスするデータの種類をそれぞれ選択します。

用途によっても異なりますが、今回はウェブサイトのアクセス解析になるので呼び出す場所を「ウェブブラウザ(JavaScript)」、アクセスするデータの種類を「ユーザーデータ」を選択し必要な認証情報を押して次に進みます。

ちなみにプロジェクト名はデフォルトだと「My Project」になりますが管理しやすいように変更してしまって問題ありません。プロジェクトへの認証情報の追加

OAuth 2.0 クライアント ID を作成する

OAuthクライアントID作成

名前はデフォルトでも問題ありません。
制限事項の「承認済みの JavaScript 生成元」と「承認済みのリダイレクト URI」にそれぞれGAを設置しているウェブサイトのドメインを入力し、OAuthクライアントID作成で次へと進みましょう。

OAuth 2.0 同意画面を設定する

OAuth 2.0 同意設定

メールアドレスとユーザーに表示するサービス名を選択、入力します。
メールアドレスに関しては登録しているGmailが選択されていると思うのでそのまま、サービス名も今回はフロント表示用ではないので適当に入力しましょう。

認証情報をダウンロードする

ダウンロード画面

これでやっと認証情報の設定が完了になるのでClient IDをどこかにメモしつつ、JSONも合わせてダウンロードしておきましょう。
セキュリティ的にはどうなのか微妙ですが、私はEvernoteにこれ系はプロジェクト毎にまとめてしまってます。

しかし、ここまででまだプロジェクトを作成しただけ。つまり入れ物を用意したに過ぎないのでまだまだ先は長いです。

サービスアカウントからクライアント ID の作成

サービス アカウントページを開き、以下の項目が表示されたら「選択」から先ほど作成した「My Project」を選択します。

プロジェクト選択

サービスアカウント作成

作成画面

上部にある「サービスアカウントを作成」を選択します。

サービスアカウントの詳細

詳細設定

ここも特に気にせず管理しやすい名前を入れて作成してしまいましょう。

このサービスアカウントにプロジェクトへのアクセスを許可する

権限設定

項目がかなり色々あるんですが、私はProjectのオーナーを選択しました。チームで利用している場合は細かく設定した方がいいかもしれません。

ユーザーにこのサービスアカウントへのアクセスを許可

秘密鍵の作成

サービスアカウントのユーザーの役割、サービスアカウント管理者の役割はオプションなので空でも大丈夫です。キーを作成を選択すると右側に選択画面が出るのでJSONを選択して秘密鍵を作成しましょう。

新しい公開キーと秘密キーのペアが生成され、コンピュータにダウンロードされます。 このキーは再発行できませんので、大切に保管してください。

はじめてのアナリティクス API: サービス アカウント向け PHP クイックスタート

とのことなので大事にしましょう。
プロジェクトのID名のJSONファイルがダウンロードされていると思いますがこれを「service-account-credentials.json」へリネームします。

作成されたメールアドレスをアナリティクスへユーザーとして追加

アナリティクスユーザー追加画面

サービスアカウントの作成に合わせて「&ltprojectId&gt-&ltuniqueId&gt@developer.gserviceaccount.com」みたいなメールアドレスが作成されているはずなので、そのメールアドレスをアナリティクスからユーザー追加します。
必要な権限は「表示と分析」になります。

これでAPI側の設定はほぼ完了です。

Google クライアント ライブラリをインストールする

PHP 用の Google API クライアント ライブラリ を入手するには、 リリースをダウンロードするか、 Composer を使用します。

はじめてのアナリティクス API: サービス アカウント向け PHP クイックスタート

とのことなのでMacであればターミナルのアプリケーションを起動してコマンドを入力なのですが、ディレクトリ指定しておかないとどこ行った?ということにもなりかねないので先にディレクトリを指定しておきましょう。

PHPが動けばどこでも構わないんですが、例えばMAMP環境であればこんな感じですかね。

ディレクトリ指定

cd /Applications/MAMP/htdocs/examle.com

ついでに先ほどリネームした「service-account-credentials.json」もこのディレクトリへ入れておきましょう。

クライアントインストール

composer require google/apiclient:^2.0

サンプルファイルを設置してデータ取得

ここまでで、やっと準備が整ったんですがまずは公式のサンプルファイルを実行してみます。

以下のソースコードをコピーして先ほどのディレクトリに「HelloAnalytics.php」という名前で保存、もしくはこちらからダウンロードします。

<?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

$analytics = initializeAnalytics();
$profile = getFirstProfileId($analytics);
$results = getResults($analytics, $profile);
printResults($results);

function initializeAnalytics()
{
  // Creates and returns the Analytics Reporting service object.

  // Use the developers console and download your service account
  // credentials in JSON format. Place them in this directory or
  // change the key file location if necessary.
  $KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';

  // Create and configure a new client object.
  $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_Analytics($client);

  return $analytics;
}

function getFirstProfileId($analytics) {
  // Get the user's first view (profile) ID.

  // Get the list of accounts for the authorized user.
  $accounts = $analytics->management_accounts->listManagementAccounts();

  if (count($accounts->getItems()) > 0) {
    $items = $accounts->getItems();
    $firstAccountId = $items[0]->getId();

    // Get the list of properties for the authorized user.
    $properties = $analytics->management_webproperties
        ->listManagementWebproperties($firstAccountId);

    if (count($properties->getItems()) > 0) {
      $items = $properties->getItems();
      $firstPropertyId = $items[0]->getId();

      // Get the list of views (profiles) for the authorized user.
      $profiles = $analytics->management_profiles
          ->listManagementProfiles($firstAccountId, $firstPropertyId);

      if (count($profiles->getItems()) > 0) {
        $items = $profiles->getItems();

        // Return the first view (profile) ID.
        return $items[0]->getId();

      } else {
        throw new Exception('No views (profiles) found for this user.');
      }
    } else {
      throw new Exception('No properties found for this user.');
    }
  } else {
    throw new Exception('No accounts found for this user.');
  }
}

function getResults($analytics, $profileId) {
  // Calls the Core Reporting API and queries for the number of sessions
  // for the last seven days.
   return $analytics->data_ga->get(
       'ga:' . $profileId,
       '7daysAgo',
       'today',
       'ga:sessions');
}

function printResults($results) {
  // Parses the response from the Core Reporting API and prints
  // the profile name and total sessions.
  if (count($results->getRows()) > 0) {

    // Get the profile name.
    $profileName = $results->getProfileInfo()->getProfileName();

    // Get the entry for the first entry in the first row.
    $rows = $results->getRows();
    $sessions = $rows[0][0];

    // Print the results.
    print "First view (profile) found: $profileName\n";
    print "Total sessions: $sessions\n";
  } else {
    print "No results found.\n";
  }
}

サンプルファイルを実行する

以下のコマンドで前項で作成したサンプルファイルを実行します。

php HelloAnalytics.php

アナリティクスのデフォルトのビューと直近7日間のトータルセッションが取得できるかと思います。

最初は「Fatal error: Uncaught Google_Service_Exception:」のようなエラーが私の環境では出てしまったのですがアナリティクスのユーザー追加の手順が抜けてしまっていたためでした。

以上がGoogleアナリティクスのAPIを利用したデータ取得の基本的な使い方になります。

まとめ

かなり長くなってしまったので、今回はサンプルファイルでの基本的なデータ取得までとしてPVの取得などのカスタマイズは次回に持ち越したいと思います。

手間ではありますが、GA連携の方がフィルターだったり目標やユーザーの属性(デモグラフィックデータ)などカスタマイズ性には優れているのでその辺りもコンテンツとして利用して行きたいというサイトには向いているのではないでしょうか。

ダブルレクタングルからレスポンシブへ




ダブルレクタングルからレスポンシブへ




-WEB制作
-

執筆者:

関連記事

UI/UX

Adobe XD CCがアップデート!Illustratorのベクターデータもコピペ可能に

もっぱら仕様頻度の上がっているAdobeのXDですが、アップデートがリリースされていました。 今回のアップデート内容は以下の通り。 Illustratorで編集可能なベクター様々なグループのオブジェク …

アニメーションの最適化

【第2回】アニメーション コンテンツの動画フォーマットの最適化

第1回となる前回は次世代フォーマットでの画像の配信についてをご紹介しました。第2回となる今回は、前回に予告していたアニメーションコンテンツの最適化についてご紹介したいと思います。 また、Android …

UI/UX

AdobeXDで三角形を作成する方法。正三角形はフォトショかイラレからのコピペの方がオススメ

結論から言うとAdobeXDだけで三角形(正三角形)を作成するよりも、フォトショかイラレで作成してCreativeCloudライブラリで共有した方が100倍早いです。とはいえ、AdobeXDは無料で利 …

WordPressのプロフィールの取得とカスタマイズ方法

ループ内での取得かループ外での取得かの用途で記述方法は変わりますが、ループ外の場合はIDの取得が基本となります。 目次 -この記事に書かれている内容- [非表示表示]1. ユーザーIDの取得方法1.1 …

ニックネーム
DeLux
プロフィール

30代の東京生活に疲れたWEBエンジニア。
好きなことで生きて行きたいがためにあれこれと手を出してます。
主にAdobe、Google、Apple、SONY辺りの記事とコーディングやプログラム、たまに動画編集やデザインなどのTips的な記事を更新してます。

ガジェットも大好きなのでその辺りもぼちぼち増やす予定。