PHP

PHP から Google Analytics API v3 を叩く

Google Analytics のデータ集計を自動でしたいので調べながら書いてみます。

1. 新しいプロジェクトを作成する

Google Developers Console 左メニュー「プロジェクト」から新規プロジェクトを作成します。ここでは適当なプロジェクト名「Analytics Project」を付けました。

2. API を有効化する

「API と認証」内「API」から、今回使う Analytics API を選択します。その後の画面でスイッチをオンにします。

3. 認証情報

OAuth 「新しいクライアント ID を作成」を選択します。アプリケーションの種類は、サービスアカウントを選択します。

その後、秘密キー(*.p12)がダウンロードされ、そのパスワードが表示されますので控えておきます。

サービスアカウントに紐付く、クライアント ID とメールアドレス、公開キーのフィンガープリント(CERTIFICATE FINGERPRINTS)も控えておきます。

4. 発行されたメールアドレスに Analytics の権限を付与する

Google Analytics に移動し、「アナリティクス設定」タブ → アカウント「ユーザー管理」から、先程発行されたメールアドレスが Analytics を見れるように、権限を付与しておきます。

5. ビュー ID を取得する

権限を付与したアカウントに紐付く、プロパティに紐付く、ビューの ID を取得します。こちらを控えておきます。

6. Googel APIs を叩くクライアントライブラリをダウンロード

GitHub から、クライアントライブラリをダウンロードします。

https://github.com/google/google-api-php-client

7. PHP から Google Analytics API v3 を叩く

先程、ダウンロードしたライブラリを使って、Analytics API を叩いてみます。定数と viewId は、自身の環境のものに変えます。

<?php

require_once(dirname(__FILE__) . '/google-api-php-client/autoload.php');

define('APPLICATION_NAME', '*');
define('SERVICE_ACCOUNT_NAME', '*@developer.gserviceaccount.com');
define('KEY_PATH', dirname(__FILE__) . '/p12/*.p12');
date_default_timezone_set('Asia/Tokyo');

class Analytics {

  private $service;

  function __construct($applicationName, $serviceAccountName, $keyPath) {
    $creds = new Google_Auth_AssertionCredentials(
      $serviceAccountName,
      array('https://www.googleapis.com/auth/analytics'),
      file_get_contents($keyPath)
    );

    $client = new Google_Client();
    $client->setApplicationName($applicationName);
    $client->setAssertionCredentials($creds);
    $this->service = new Google_Service_Analytics($client);
  }

  function getReport($viewId, $startDate, $endDate) {
    $result = $this->service->data_ga->get(
      'ga:' . $viewId,
      $startDate,
      $endDate,
      'ga:pageviews,ga:users'
    );

    return $result['rows'];
  }
}

$analytics = new Analytics(APPLICATION_NAME, SERVICE_ACCOUNT_NAME, KEY_PATH);
$viewId = '*';
$yesterday = date('Y-m-d', strtotime('-1 day'));
var_dump($analytics->getReport($viewId, $yesterday, $yesterday));

実行結果は、こんな感じです。昨日一日分のページビューとユーザ数が取得出来ました。

$ php analytics.php 
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(4) "1091"
    [1]=>
    string(3) "870"
  }
}

参考