初心者でも分かる!なGoogle Analytics APIの使い方

初心者でも分かる!なGoogle Analytics APIの使い方

このブログのサイドバー辺りに人気記事一覧というコンテンツを作りたくて、そのソースを何にしようかなーと思っていたところ、アクセス解析ツールの「Google Analytics」から、APIを利用してデータを取得できることを知りました。この記事では、初心者の方向けに、Google Analytics APIの使い方を解説します。

準備(サービスアカウントの作成)

Google AnalyticsのAPIを利用するには、サービスアカウントを作成する必要があります。サービスアカウントとは、例えば、PHPとしてあなたのAnalyticsのデータにアクセスする仮想のアカウントだと思って下さい。イメージで大丈夫です。

必要なもの

Google Analytics APIを利用するためには、Googleのユーザーアカウントが必要です。まだ所有していない人は下記ページから作成して下さい。また、このブログではプログラミング言語としてPHPを利用するので、PHPが稼働する環境も前提となります。

Google Developers Console

Google Developers Console
Google Developers Console

まず、Googleの開発者用管理ページである「Google Developers Console」にアクセスして下さい。ログインがまだの人は求められます。このページは、アプリケーションを管理するために利用するページなので、ブックマークしておきましょう。

プロジェクトを作成する

続いて、プロジェクトを作成します。

プロジェクトとは?

プロジェクトとは、Googleが提供する様々なAPIを使った様々なアプリケーションの1つのまとまりです。ウェブサイトのことをイメージすると分かりやすいかもしれません。例えば、私の場合は「Syncer」というプロジェクトを作って、そのプロジェクトの中で、Google Analytics APIやGoogle Maps APIを利用するわけです。…ピンと来ない場合も、作業だと思って進みましょう。

作成の流れ

「プロジェクト」をクリックする
「プロジェクト」をクリックする

それでは、早速、プロジェクトを作成してみましょう。左上部分にある「プロジェクトを作成」というボタンをクリックして下さい。

プロジェクト名を入力する
プロジェクト名を入力する

プロジェクトの作成はとても簡単で、ただ、半角英数字と一部記号で名前を決めるだけです。「プロジェクト名」の項目に好きな名前を入力して下さい。通常はウェブサイト名などでしょう。「プロジェクトID」の項目はプロジェクトを識別するための一意のIDです。ここは自動で決定されるので、変更する必要はありません。準備ができたら、「作成」をクリックして下さい。クリックしてしばらく待つと、プロジェクトの作成が完了します。

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

プロジェクトを作成したら、次にクライアントID(サービスアカウント)を作成します。

クライアントIDとは?

クライアントIDは、他のウェブサイトのAPIでいうアプリケーションにあたります。先ほど作成したプロジェクトがウェブサイト全体を表すなら、このクライアントIDは個々のコンテンツということになります。例えば、私の場合は、ラーメンカテゴリでGoogle Maps APIを利用しています。なので、Syncerというプロジェクト内で、ラーメンカテゴリというクライアントIDを作成しているわけです。クライアントIDの集まりが、プロジェクトです。

ここで勘違いとなってはいけないので付け加えておくと、プロジェクトとクライアントIDの関係はどう構成しようと自由です。必ずしも、先ほどの例えのように、「ウェブサイトにつき1つのプロジェクトを作成する」と決まっているわけではなく、1つのウェブサイトに複数のプロジェクトを作成してもかまいません。あくまでも、あなたの管理しやすいように、プロジェクトとクライアントIDを構成して下さい。

作成の流れ

プロジェクト名をクリックする
プロジェクト名をクリックする

「プロジェクト」の作成が完了すると、自動的に、そのプロジェクトのトップ画面に移動します。次回以降にまた同じページに戻るには、Google Developers Consoleにアクセス後、そのプロジェクト名をクリックして下さいね。

「認証情報」をクリックする
「認証情報」をクリックする

さて、プロジェクトの専用ページに戻ったら、左側メニューの「APIと認証」の項目内にある「認証情報」をクリックして下さい。

「新しいクライアントIDを作成」をクリックする
「新しいクライアントIDを作成」をクリックする

「認証情報」の管理画面に移動します。「OAuth」という項目内にある「新しいクライアントIDを作成」をクリックして下さい。

「サービスアカウント」と「P12 キー」を選択する
「サービスアカウント」と「P12 キー」を選択する

アプリケーションの種類を選択します。「サービスアカウント」「P12 キー」を選択し、「クライアントIDを作成」をクリックして下さい。通常、Twitter APIなどを利用する場合はウェブアプリケーションを利用しますが、今回は「サービスアカウント」を選択して下さい。これはどういうものかというと、あらかじめ、サービス側でクライアントIDに許可を出しておくことで、アクセストークンの発行作業をすることなく、データにアクセスできる性質のものです。サーバー構築経験のある人は、「鍵交換方式による認証」をイメージすると掴みやすいかもしれません。

いずれにしろ、手順に従えば予備知識は不要です。何も分からない今は手だけを動かして下さい。繰り返しになりますが、仕組みは動かしながら覚えればいいと思います。技術的な詳細を知りたい人は、下記の公式ドキュメント(英語)をご参考下さい。

秘密キーファイルの確認

秘密キーを確認する
秘密キーを確認する

「クライアントIDを作成」をクリックすると、「新しい公開キー/秘密キーのペアが生成されました」という確認メッセージが表示されます。「秘密キーのパスワードが下に表示されます。後でもう一度表示することはできません。」とありますが、パスワードはnotasecretとなっているはずです。この値は利用しませんが、心配なら一応、メモしておきましょう。…いや、不要です。

そして、この確認メッセージが表示されると同時に、秘密キーのファイルが自動的にダウンロードされるはずです。Syncer Analytics-0a6a76b4e70b.p12というような、.p12が拡張子になっているファイルです。これは、とても重要なファイルで、後ほど使うので、保存しておいて下さい。

ファイル名にはプロジェクト名が最初に付いてます。例えば「Syncer Analytics」というプロジェクトを作ったら、秘密キーのファイル名はSyncer Analytics-0a6a76b4e70b.p12となります。ファイル名にスペースが入っているとアレなので、Syncer_Analytics-0a6a76b4e70b.p12というように、ファイル名を変更して下さい。ファイル名は他人に知られてはいけません。が、変更は自由なので、極端な話、a.p12としても働きます。気軽に変更しちゃいましょ。

各種キーの確認

クライアントIDの情報
クライアントIDの情報

「認証情報」の画面に戻ります。作成したクライアントIDの情報が加わっているはずです。

秘密キーファイルの再発行
秘密キーファイルの再発行

クライアントID情報の下部に、「新しいP12キーを生成」というボタンがあります。ここをクリックすると、秘密キーファイルを新しくダウンロードすることができます。他人にファイル名を知られてしまった可能性がある、ファイルをなくしてしまった…、などの場合にご利用下さい。当然、古いファイルは利用できなくなるのでご注意下さい。

各種キーの確認
各種キーの確認

赤枠部分の「クライアントID」「メールアドレス」を後ほど利用するので、保存しておいて下さい。これで、クライアントIDの作成は完了です。

Analytics APIを有効にする

次にプロジェクトでGoogle Analytics APIを使えるように設定します。

「API」をクリックする
「API」をクリックする

左側メニューの「API」をクリックして下さい。

「Analytics API」を検索する
「Analytics API」を検索する

検索フォームに「Analytics API」と入力し、マッチした候補の中から「Analytics API」をクリックして下さい。

「APIを有効にする」をクリックする
「APIを有効にする」をクリックする

「Analytics API」の専用のページに移動するので、「APIを有効にする」をクリックして下さい。これで、このプロジェクトでGoogle Analytics APIを利用することができるようになります。

クライアントIDのアクセスを許可する

仕上げに、クライアントIDとして作成したサービスアカウントが、自分のGoogle Analyticsのデータにアクセスできるように設定しましょう。操作はGoogle Analyticsの管理画面で行ないます。

「アナリティクス設定」をクリックする
「アナリティクス設定」をクリックする

画面上部のメニューにある「アナリティクス設定」をクリックして下さい。

ビューを設定する
ビューを設定する

「アカウント」「プロパティ」「ビュー」を、利用するウェブサイトのものに合わせて下さい。

「ユーザー管理」をクリックする
「ユーザー管理」をクリックする

「ビュー」の項目内にある「ユーザー管理」をクリックして下さい。

メールアドレスを追加する
メールアドレスを追加する

権限の付与設定の画面に移動します。赤枠部分のフォームで、先ほど、クライアントIDを作成した時の、クライアントID情報内にある「メールアドレス」を入力し、画面右側にあるセレクトボックスを開き、「ユーザー管理」「編集」「共有設定」「表示と分析」にチェックを入れて、最後に「追加」をクリックして下さい。

メールアドレスが追加される
メールアドレスが追加される

フォームの上部に、入力したメールアドレスが追加されていれば、大丈夫です。

「ビュー設定」をクリックする
「ビュー設定」をクリックする

「アナリティクス設定」の画面に移動して下さい。「ビュー」の項目内にある「ビュー設定」をクリックして下さい。

ビューIDを確認する
ビューIDを確認する

ビューIDを確認して下さい。このIDを、後ほど利用します。

ライブラリの入手

いよいよ、プログラミングに取りかかっていきましょう。この辺でコーヒーでも持ってきて落ち着いて…。さて、Googleは、GitHubで公式ライブラリを公開しています。その中で、PHPのライブラリは下記ページにあります。右メニューにある「Download」から、ライブラリをダウンロードして下さい。

ダウンロードしたgoogle-api-php-client-master.zipを解凍して下さい。中には大量のファイルが含まれています。これらは、Googleが提供する様々なAPIをフォローしたものです。読み込むファイルは、google-api-php-client-masterフォルダの直下にあるautoload.phpのみで大丈夫ですが、それ以外のファイルを外したり、配置変更しないでおいて下さいね。

google-api-php-client-master.zip

  • google-api-php-client-master
    • autoload.php

プログラミング

動作確認のための、単純なPHPを作成していきましょう。ページタイトル、ページのパス、そしてページビュー数を取得します。

ライブラリを読み込む

まずは、ライブラリを読み込みます。

PHP

// ライブラリを読み込む
require_once './google-api-php-client-master/autoload.php' ;

APIキーの設定

続いて、プログラムに必要な各種キーを変数に代入します。クライアントIDの情報にある「メールアドレス」、そして、Google Analyticsで確認できる「ビューID」をセットして下さい。

PHP

// クライアントID
$client_id = '388703791528-4usfjkghn454k2ivq24f8t34o3spf48s@developer.gserviceaccount.com' ;

// ビューID
$view_id = '86695217' ;

秘密キーの読み込み

続いて、秘密キーファイルを読み込みます。秘密キーファイルを任意の場所にアップロードしておいて下さい。できれば、ルート外(直接URLアドレスでアクセスできない)のフォルダに設置して、絶対パスで読み込みましょう。

PHP

	// 秘密キーファイルの読み込み
	$private_key = @file_get_contents( './Syncer_Analytics-208312d9d56b.p12' ) ;

条件を指定する

データを取得するための、パラメータを、ライブラリのルールに従って、指定します。

PHP

// 取得する期間 (YYYY-MM-DD)
$from = '2014-11-10' ;		// 対象開始日
$to = '2014-12-10' ;		// 対象終了日

// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
$dimensions = 'ga:pageTitle, ga:pagePath, ga:date' ;		// ディメンション
$metrics = 'ga:pageviews' ;		// メトリクス

//オプション
$option = array(
	'dimensions' => $dimensions ,
	'max-results' => 10 ,
	'sort' => '-ga:pageviews' ,
//	'start-index' => 50,	// 取得開始位置
) ;

期間

取得する期間は、基本的にYYYY-MM-DDの形式で指定します。todayyesterday5daysAgoなどといった指定も可能ですが、あまり使う機会はなさそうです。

オプション

オプションを配列で指定しておきます。取得件数は最大で1,000件までです。ページが1,000件以上ある場合は、オプションとなる連想配列のstart-indexというキーに取得開始位置を指定できます。1001を指定すれば、1001件目から、すなわち2ページ目を取得できます。

取得するデータ

最も重要な「取得するデータ」。これは「ディメンション」と「メトリクス」という2つの項目を組み合わせて指定します。簡単に言うと、テーブルでいう「列」と「行」の関係だと考えて下さい。例えば、今回のサンプルでは、メトリクスに「ページビュー(ga:pageviews)」、ディメンションに「ページタイトル(ga:pageTitle)」「ページURL(ga:pagePath)」「日付(ga:date)」を指定しています。メトリクス、ディメンションには、それぞれ1回のリクエストにつき10つまで項目を指定することができます。複数指定する場合は半角カンマ(,)で区切ります。指定できる項目については、後述します。

リクエストを実行する

いよいよドキドキの瞬間です。リクエストを実行して、データを取得してみましょう。下記は、設定内容を元に認証作業、データ取得のためのリクエストを行なう処理です。言わば決まった処理なので、特に何をしているかを理解する必要はありません。

PHP

// トークンのセット
if( isset( $_SESSION['service_token'] ) )
{
	$client->setAccessToken( $_SESSION['service_token'] ) ;
}

// スコープのセット (読み込みオンリー)
$scopes = array( 'https://www.googleapis.com/auth/analytics.readonly' ) ;

// クレデンシャルの作成
$credentials = new Google_Auth_AssertionCredentials( $client_id , $scopes , $private_key ) ;

// Googleクライアントのインスタンスを作成
$client = new Google_Client() ;
$client->setAssertionCredentials( $credentials ) ;

// トークンのリフレッシュ
if( $client->getAuth()->isAccessTokenExpired() )
{
	$client->getAuth()->refreshTokenWithAssertion( $credentials ) ;
}

// セッションの設定
$_SESSION['service_token'] = $client->getAccessToken() ;

// Analyticsのインスタンスを作成
$analytics = new Google_Service_Analytics( $client ) ;

// データの取得
$obj = $analytics->data_ga->get( 'ga:' . $view_id , $from , $to , $metrics , $option ) ;

// JSONデータに変換して出力
echo json_encode( $obj ) ;

このコードは公式のサンプルを参考にしたものです。該当箇所を確認したい場合は、下記ページをご覧下さい。

サンプルプログラム

以上を踏まえたサンプルプログラムが下記です。デモを確認してみて下さいね。

PHP

<?php

	// ライブラリを読み込む
	require_once './autoload.php' ;

	// クライアントID
	$client_id = '...@developer.gserviceaccount.com' ;

	// ビューID
	$view_id = '86695217' ;

	// 秘密キーファイルの読み込み
	$private_key = @file_get_contents( './Syncer_Analytics-208312d9d56b.p12' ) ;

	// 取得する期間 (YYYY-MM-DD)
	$from = date( 'Y-m-d' , strtotime( '-1 day' ) ) ;		// 対象開始日
	$to = date( 'Y-m-d' ) ;		// 対象終了日

	// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
	$dimensions = 'ga:pageTitle, ga:pagePath, ga:date' ;		// ディメンション
	$metrics = 'ga:pageviews' ;		// メトリクス

	//オプション
	$option = array(
		'dimensions' => $dimensions ,
		'max-results' => 10 ,
		'sort' => '-ga:pageviews' ,
//		'start-index' => 11,	// 取得開始位置
	) ;

	// トークンのセット
	if( isset( $_SESSION['service_token'] ) )
	{
		$client->setAccessToken( $_SESSION['service_token'] ) ;
	}

	// スコープのセット (読み込みオンリー)
	$scopes = array( 'https://www.googleapis.com/auth/analytics.readonly' ) ;

	// クレデンシャルの作成
	$credentials = new Google_Auth_AssertionCredentials( $client_id , $scopes , $private_key ) ;

	// Googleクライアントのインスタンスを作成
	$client = new Google_Client() ;
	$client->setAssertionCredentials( $credentials ) ;

	// トークンのリフレッシュ
	if( $client->getAuth()->isAccessTokenExpired() )
	{
		$client->getAuth()->refreshTokenWithAssertion( $credentials ) ;
	}

	// セッションの設定
	$_SESSION['service_token'] = $client->getAccessToken() ;

	// Analyticsのインスタンスを作成
	$analytics = new Google_Service_Analytics( $client ) ;

	// データの取得
	$obj = $analytics->data_ga->get( 'ga:' . $view_id , $from , $to , $metrics , $option ) ;

	// JSONデータに変換
	$json = json_encode( $obj ) ;

	// HTML用
	$html = '' ;

	// 実行結果を出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<p><b>' . date( 'Y/m/d' , strtotime( $from ) ) . '</b>の、ページビューのデイリーランキングを取得してみました。<mark>値はサンプル用のダミーです。</mark></p>' ;

	// エラー判定
	if( !isset($obj->rows) )
	{
		$html .= '<p><mark>データを取得できませんでした…。</mark></p>' ;
	}
	else
	{
		$html .= '<ol>' ;

		// 解析
		for( $i=0 , $l=count( $obj->rows ) ; $l > $i ; $i++ )
		{
			// エイリアス
			$item = $obj->rows[ $i ] ;

			// 出力
			$html .= '<li><a href="' . $item[1] . '" target="_blank">' . $item[0] . '</a> (' . number_format( $item[3] ) . 'PV)</li>' ;
		}

		$html .= '</ol>' ;
	}

	// 取得したデータ
	$html .= '<h2>取得したデータ(JSON)</h2>' ;
	$html .= 	'<textarea rows="8">' . $json . '</textarea>' ;

?>

<?php
	// ブラウザに[$html]を出力 (HTMLのヘッダーとフッターを付けましょう)
	echo $html ;
?>

サンプルデモを見る

取得できるJSON

取得できるデータを説明します。

サンプル

取得したデータをJSON型に変換した時の出力結果のサンプルが下記です。rowsプロパティ内に、取得した件数分が配列形式で含まれています。1つ1つのデータの内容は、「ディメンションで指定した項目」「メトリクスで指定した項目」の順番に配列になっています。例えばサンプルでは、ディメンションに設定した「ページタイトル(ga:pageTitle)」「ページURL(ga:pagePath)」「日付(ga:date)」に続き、最後にメトリクスに指定した「ページビュー(ga:pageviews)」という順番に格納されてますよね。

JSON

{
	"containsSampledData": false,
	"id": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:86695217&dimensions=ga:pageTitle,+ga:pagePath,+ga:date&metrics=ga:pageviews&sort=-ga:pageviews&start-date=2014-11-10&end-date=2014-12-10&start-index=100&max-results=5",
	"itemsPerPage": 5,
	"kind": "analytics#gaData",
	"nextLink": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:86695217&dimensions=ga:pageTitle,+ga:pagePath,+ga:date&metrics=ga:pageviews&sort=-ga:pageviews&start-date=2014-11-10&end-date=2014-12-10&start-index=105&max-results=5",
	"previousLink": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:86695217&dimensions=ga:pageTitle,+ga:pagePath,+ga:date&metrics=ga:pageviews&sort=-ga:pageviews&start-date=2014-11-10&end-date=2014-12-10&start-index=95&max-results=5",
	"rows": [
		[
			"Instagramでユーザーをブロック(フォロワー外し)する方法",
			"/instagram-how-to-block-user",
			"20141205",
			"663"
		],
		[
			"Instagramを始めよう!アカウントを作成する方法",
			"/instagram-how-to-create-account",
			"20141129",
			"660"
		],
		[
			"Instagramで投稿写真を非公開に設定する方法",
			"/instagram-how-to-setting-private-mode",
			"20141129",
			"659"
		],
		[
			"Instagramでユーザーをブロック(フォロワー外し)する方法",
			"/instagram-how-to-block-user",
			"20141119",
			"658"
		],
		[
			"Instagramのダイレクトメッセージの使い方",
			"/instagram-how-to-use-direct-message",
			"20141111",
			"658"
		]
	],
	"sampleSize": null,
	"sampleSpace": null,
	"selfLink": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:86695217&dimensions=ga:pageTitle,+ga:pagePath,+ga:date&metrics=ga:pageviews&sort=-ga:pageviews&start-date=2014-11-10&end-date=2014-12-10&start-index=100&max-results=5",
	"totalResults": 7224,
	"totalsForAllResults": {
		"ga:pageviews": "324049"
	}
}

各パラメータの説明

主なパラメータを説明します。

itemsPerPage
総ページ数。指定した取得件数で、全件数を取得するのに必要なページ数。
rows
メインとなるデータ。ディメンションとメトリクスで指定した順に、データが配列形式で含まれている。
totalResults
指定した条件でヒットした件数。
totalsForAllResults
メトリクスで指定した項目の合計値。

パラメータの指定例

取得件数を指定したり、指定語を除外するなど、パラメータの指定する方法を説明します。

パラメータの一覧

指定できる主なパラメータの一覧です。

max-results
取得件数。
start-index
取得開始位置。
sort
データの並び順。ディメンション、メトリクスの項目を指定すると、その項目の数値で並び替える。ga:pageviewsならページビューが少ない順、先頭にマイナス(-)を付けて-ga:pageviewsなら大きい順となる。
filters
フィルターをかける。{項目}{演算子}{値}で指定する。
prettyPrint
取得できるデータに、見やすいようにインデントや改行を付けるか否か。デフォルトではfalse

フィルターの演算子

フィルターを指定する場合に利用できる演算子の説明です。

組み合わせ
2つ以上のフィルターを適用する場合、ORならカンマ(,)、ANDならばセミコロン(;)で区切ること。例えば、ページビューが10000以上かつ、ユーザー数が5000以上ならば、ga:pageviews>10000 ; ga:users>5000
, … OR
; … AND
メトリクス
メトリクスの項目に利用できる演算子です。例えば、ページビューが10000以上のデータのみを取得したい場合は、ga:pageviews>10000と指定する。
== … 一致
!= … 一致しない
> … 大きい(超過)
< … 小さい(未満)
>= … 以上
<= … 以下
ディメンション
ディメンションの項目に利用できる演算子です。例えば、データに(not set)を含めたくない場合は、ga:referralPath!=(not set)と指定する。
== … 一致
!= … 一致しない
=@ … 含む
!@ … 含まない
=~ … 正規表現の一致
!~ … 正規表現の不一致

データの取得例

Google Analyticsの様々なデータを取得するための、指定例を紹介します。なお、この章で稼働するサンプルの値は、全てダミーの数値となっています。

ユーザーサマリー

ユーザーサマリー
ユーザーサマリー

ブログなどで、よくアクセス数公開の記事で紹介される項目です。Google Analyticsの基本的な項目ですねー。これらは各項目の合計値が目的となるので、totalsForAllResultsプロパティを参照しましょう。

PHP

$dimensions = 'ga:pageTitle, ga:pagePath' ;		// ディメンション
$metrics = 'ga:sessions , ga:users , ga:pageviews , ga:pageviewsPerSession , ga:avgSessionDuration , ga:bounceRate , ga:percentNewSessions' ;		// メトリクス

このコードの動作を確認する

検索クエリ

検索クエリ
検索クエリ

ユーザーがどんなキーワードで自分のウェブサイトに辿り着いているのか、検索クエリを取得してみましょう。(not set)(not provided)を除外するために、フィルターを指定しておきましょう。

PHP

// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
$dimensions = 'ga:pageTitle, ga:pagePath , ga:keyword' ;		// ディメンション
$metrics = 'ga:pageviews' ;		// メトリクス

//オプション
$option = array(
	'dimensions' => $dimensions ,
	'sort' => '-ga:pageviews' ,
	'filters' => 'ga:keyword!=(not set);ga:keyword!=(not provided)' ,
) ;

このコードの動作を確認する

参照元(リファラー)

参照元(リファラー)を取得することで、どのページからウェブサイトにアクセスがあるのか、すなわち、被リンクを知ることができます。ページごとのデータを取得すると、なかなか大変なことになります。なので、今回はサイト全体を対象にして取得します。指定するディメンションの項目はアドレス全体を知りたい場合はga:fullReferrer、大雑把で把握したい場合はga:sourceがお勧めです。

PHP

// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
$dimensions = 'ga:fullReferrer' ;		// ディメンション
$metrics = 'ga:pageviews' ;		// メトリクス

このコードの動作を確認する

月間ページビュー

ページビューが月ごとにどのように推移してきたのかを取得してみましょう。それには、ディメンションにga:yearMonthを指定するのが便利です。これが、例えばga:monthを指定した場合は、2014年1月、2015年1月と同じ1月で数値が合計されてしまう点に注意しましょう。最新順に並べるために、sortの指定も必要です。

PHP

// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
$dimensions = 'ga:yearMonth' ;		// ディメンション
$metrics = 'ga:pageviews' ;		// メトリクス

//オプション
$option = array(
	'dimensions' => $dimensions ,
	'sort' => '-ga:yearMonth' ,
) ;

このコードの動作を確認する

デバイス

パソコン、タブレット、スマホの3つの種類のデバイスの、割合を調べてみましょう。モバイルフレンドリーと言われる今、スマホの比率の大きさに驚くばかりです…。フィルターで、取得するカテゴリをdesktopmobiletabletの3つに絞っています。

PHP

// 取得するデータの組み合わせ (複数の場合は[,]で区切る)
$dimensions = 'ga:deviceCategory' ;		// ディメンション
$metrics = 'ga:pageviews' ;		// メトリクス

//オプション
$option = array(
	'dimensions' => $dimensions ,
	'filters' => 'ga:deviceCategory==desktop,ga:deviceCategory==mobile,ga:deviceCategory==tablet' ,
) ;

このコードの動作を確認する

ディメンションとメトリクス

Google Analytics APIでデータを取得するために指定するDimensionsとMetrics。それぞれがどういったデータなのか調べながら、メモしていきます。まだ項目は少ないですが、勉強し次第増やしていきたいと思います。

User

ディメンション

ga:userType
ユーザータイプ。新規訪問ユーザーと、リピーターユーザー。
ga:sessionCount
セッション回数。
ga:daysSinceLastSession
再訪問日。リピーターが、前回から何日立ってから訪れたか。
ga:userDefinedValue
サイト運用者が「ユーザー定義」によって作成した各ユーザー。デフォルトではnot setのみ。

メトリクス

ga:users
ユニークユーザーの人数。
ga:newUsers
新規ユーザーの人数。
ga:percentNewSessions
新規セッション率。セッション数における新規ユーザー人数の割合、パーセンテージ。ga:newUsers / ga:sessionsで求める。
ga:sessionsPerUser
ユーザー1人あたりのセッション数。

Session

ディメンション

ga:sessionDurationBucket
秒単位のセッションの長さ。

メトリクス

ga:sessions
セッション数。
ga:bounces
1ページの閲覧のみだったセッション数。
ga:bounceRate
直帰率。全セッションにおけるバウンス数の割合。ga:bounces / ga:sessionsで求める。
ga:sessionDuration
全てのセッションの、セッション時間の合計秒数。
ga:avgSessionDuration
全てのセッションの、セッション時間の平均秒数。
ga:hits
ヒット数。これは、pageviewやevent、timingなどの合計数。

Traffic Sources

ディメンション

ga:referralPath
リファラー(参照元)の、パス。
ga:fullReferrer
リファラー(参照元)の、フルアドレス。
ga:campaign
utm_campaignパラメータなどを付けた、カスタムキャンペーンのリファラー(参照元)。
ga:source
リファラー(参照元)の、ホスト。
ga:medium
utm_mediumパラメータなどを付けた、リファラー(参照元)の、媒体。
ga:sourceMedium
リファラー(参照元)の、媒体とホストの組み合わせ。
ga:keyword
アクセスに繋がった検索キーワード。
ga:adContent
utm_contentパラメータなどを付けた、アクセスを送った広告、プロモーション。
ga:socialNetwork
リファラー(参照元)の、ソーシャルネットワークの種類。
ga:hasSocialSourceReferral
ソーシャルネットワークのリファラー(参照元)と、ソーシャルネットワークじゃないリファラー(参照元)。
ga:campaignCode
キャンペーンコードであるutm_idパラメータを付けたアクセス。

メトリクス

ga:organicSearches
オーガニック検索のセッション数。

Platform or Device

ディメンション

ga:browser
ブラウザの情報。Android Browser、Chromeなど。
ga:browserVersion
ブラウザのバージョン情報。通常はga:browserと組み合わせて利用する。11.0.696.34、26.0.1410.58など。
ga:operatingSystem
オペレーティング・システム、OSの情報。Macintosh、Androidなど。
ga:operatingSystemVersion
OSのバージョン情報。通常はga:operatingSystemと組み合わせて利用する。4.4.2、7.1.2など。
ga:mobileDeviceBranding
モバイルデバイスのブランド。Apple、KDDIなど。
ga:mobileDeviceModel
モバイルデバイスのモデル。AQUOS SHL23、Xperia SOL25、iPhoneなど。
ga:mobileInputSelector
モバイルデバイスの入力セレクタ。stylus、touchscreenなど。
ga:mobileDeviceInfo
ga:mobileDeviceBrandingga:mobileDeviceModelの組み合わせ。Apple iPhone、Kyocera KYY24など。
ga:mobileDeviceMarketingName
モバイルデバイスの、マーケットで利用される名称。AQUAS PHONE IS12SH for KDDI、GALAXY S5 SC-04F for DoCoMoなど。
ga:deviceCategory
端末のカテゴリ。desktop(デスクトップ)、mobile(スマホ)、tablet(タブレット)など。
ga:dataSource
ヒットのデータソース。web(ウェブ)、app(アプリ)。

Geo Network

ディメンション

ga:continent
大陸。Africa、Americas、Asia、Europeなど。
ga:subContinent
大陸の補助的な情報。South-Eastern Asia、Eastern Europeなど。
ga:country
国。France、Hong Kong、Japanなど。
ga:region
地域。日本で言えば、都道府県。アメリカで言えば、州。Nara Prefecture、New Yorkなど。
ga:metro
マーケット調査に使用されるエリア区分。日本の地域はない。Boston MA-Manchester NH、San Diego CAなど。
ga:city
町。日本で言えば、市区町村。Adachi、Chicagoなど。
ga:latitude
緯度。
ga:longitude
経度。
ga:networkDomain
ネットワーク・ドメイン。bbexcite.jp、wakwak.ne.jpなど。
ga:networkLocation
ネットワークの地域名。biglobe inc.、emobile ltd.など。
ga:cityId
市区町村ID。日本では郵便番号。
ga:countryIsoCode
ISO-3166-1に基づいた国名コード。
ga:regionId
地域ID。
ga:regionIsoCode
ISO-3166-2に基づいた地域コード
ga:subContinentCode
大陸コード

System

ディメンション

ga:flashVersion
flashのバージョン。
ga:javaEnabled
Javaが利用可能か。
ga:language
端末の言語設定。
ga:screenColors
ディスプレイの色深度。32-bit、24-bit、16-bitなど。
ga:sourcePropertyDisplayName
参照元プロパティの表示名。
ga:sourcePropertyTrackingId
参照元プロパティのトラッキングID。
ga:screenResolution
ディスプレイの解像度。

Social Activities

ディメンション

ga:socialActivityEndorsingUrl
ソーシャル経由のリファラー(参照元)。
ga:socialActivityDisplayName
ソーシャルでシェアされた時のタイトル。
ga:socialActivityPost
ソーシャルでシェアされた時の言及、コメント。
ga:socialActivityTimestamp
ソーシャルでシェアされた時の投稿時間。
ga:socialActivityUserHandle
ソーシャルでシェアしたユーザーのID。
ga:socialActivityUserPhotoUrl
ソーシャルでシェアしたユーザーのイメージ画像のURL。あまり機能はしていない。
ga:socialActivityUserProfileUrl
ソーシャルでシェアしたユーザーのプロフィールページのURL。
ga:socialActivityContentUrl
ソーシャルでシェアされたページのURL。
ga:socialActivityTagsSummary
ソーシャルでシェアされた時に付けられたタグ。そのタグに貼られたリンクのHTML込み。
ga:socialActivityAction
ソーシャルでシェアされた時のアクション。bookmarkcommentなど。
ga:socialActivityNetworkAction
ユーザーがソーシャルカウントをアップした時のアクション。Hatena Bookmark : bookmarkGoogle+ : +1など。

メトリクス

ga:socialActivities
ソーシャル上で、コンテンツのURLがシェアされた活動の回数。

Page Tracking

ディメンション

ga:hostname
コンテンツのホスト。当サイトでは、たまーに、別サイトがHTMLをそのままコピーしたため、同じAnalytics IDで集計して、そのサイト(ホスト)のページビューデータが送られてくることがあります…。
ga:pagePath
コンテンツのパス。
ga:pagePathLevel1
コンテンツの第1階層のパス。
ga:pagePathLevel2
コンテンツの第2階層のパス。
ga:pagePathLevel3
コンテンツの第3階層のパス。
ga:pagePathLevel4
コンテンツの第4階層のパス。
ga:pageTitle
コンテンツのページタイトル。
ga:landingPagePath
ユーザーが一番最初にアクセスしたページ。
ga:secondPagePath
ユーザーが2番目にアクセスしたページ。
ga:exitPagePath
ユーザーが一番最後にアクセスしたページ。
ga:previousPagePath
ユーザーが、ga:pagePathの直前にアクセスしたページ。
ga:pageDepth
ユーザーが1回のセッションでアクセスしたページ数。

メトリクス

ga:pageValue
ページの価値、平均収益。
ga:entrances
エントランス(一番最初にアクセス)になった回数。
ga:entranceRate
全ページビューにおけるエントランスになった割合。ga:entrances / ga:pageviewsで求められる。
ga:pageviews
PV、ページビュー数。単純に、そのページが見られた回数。
ga:pageviewsPerSession
ページ/セッション。1回のセッションあたりの、平均ページビュー数。
ga:uniquePageviews
ユニークなページビュー数。1回のセッションで、同じページが何回見られても、カウントは1になる。
ga:timeOnPage
全ユーザーの、滞在時間を合計した秒数。
ga:avgTimeOnPage
全ユーザーの、滞在時間を平均した秒数。
ga:exits
出口(一番最後のアクセス)になった回数。
ga:exitRate
全ページビューにおける出口になった割合。ga:exits / ga:pageviewsで求められる。

Site Speed

メトリクス

ga:pageLoadTime
読み込み時間。秒単位。
ga:pageLoadSample
読み込み時間を測定する際のサンプル数。
ga:avgPageLoadTime
平均読み込み時間。(ga:pageLoadTime / ga:pageLoadSample / 1000)で求められる。
ga:domainLookupTime
ドメインのルックアップ時間。秒単位。
ga:avgDomainLookupTime
ドメインの平均ルックアップ時間。(ga:domainLookupTime / ga:speedMetricsSample / 1000)で求められる。
ga:pageDownloadTime
ページのダウンロード時間。秒単位。
ga:avgPageDownloadTime
ページの平均ダウンロード時間。(ga:pageDownloadTime / ga:speedMetricsSample / 1000)で求められる。
ga:redirectionTime
リダイレクト時間。秒単位。
ga:avgRedirectionTime
平均リダイレクト時間。(ga:redirectionTime / ga:speedMetricsSample / 1000)で求められる。
ga:serverConnectionTime
サーバーの接続時間。秒単位。
ga:avgServerConnectionTime
サーバーの平均接続時間。(ga:serverConnectionTime / ga:speedMetricsSample / 1000)で求められる。
ga:serverResponseTime
サーバーの応答時間。秒単位。
ga:avgServerResponseTime
サーバーの平均応答時間。(ga:serverResponseTime / ga:speedMetricsSample / 1000)で求められる。
ga:speedMetricsSample
サイトスピードの速度測定に使用したサンプル数。
ga:domInteractiveTime
ドキュメント インタラクティブ時間。ブラウザがドキュメントを解析するのにかかった時間。ユーザーの所在地からサーバーまでのネットワーク通信時間も含まれる。秒単位。
ga:avgDomInteractiveTime
平均のドキュメント インタラクティブ時間。(ga:domInteractiveTime / ga:domLatencyMetricsSample / 1000)で求められる。
ga:domContentLoadedTime
ドキュメント コンテンツ読み込み時間。ブラウザがドキュメントを解析し、繰延スクリプトやパーサー挿入スクリプト(DOMContentLoaded)を実行するのに要した平均時間。ユーザーの所在地からサーバーまでのネットワーク通信時間も含まれる。
ga:avgDomContentLoadedTime
平均のドキュメント コンテンツ読み込み時間。(ga:domContentLoadedTime / ga:domLatencyMetricsSample / 1000)で求められる。
ga:domLatencyMetricsSample
ドキュメント読み込み速度を測定するのに使用したサンプル数。

Time

ディメンション

ga:date
日付。
ga:year
年数。
ga:month
月。0112まで。
ga:week
週番号。0153まで。
ga:day
日。0131まで。
ga:hour
時間。0023まで。
ga:minute
分。0059まで。
ga:nthMonth
指定した期間内における月番号。0000〜。例えば、2014年6月から2014年11月までのデータを取得した時の、0001は2014年7月のデータとなる。
ga:nthWeek
指定した期間内における週番号。0000〜。例えば、2014年6月から2014年11月までのデータを取得した時の、0001は、2014年6月8〜15日(くらい)のデータとなる。
ga:nthDay
指定した期間内における日番号。0000〜。例えば、2014年6月1日から2014年1月5日までのデータを取得した時の、0001は、2014年6月2日のデータとなる。
ga:nthMinute
指定した期間内における分番号。000000〜。
ga:dayOfWeek
曜日番号。06まで。
ga:dayOfWeekName
曜日名称。SundaySaturdayまで。
ga:dateHour
日付と時間の組み合わせ。YYYYMMDDHHで表される。
ga:yearMonth
年と月の組み合わせ。YYYYMMで表される。
ga:yearWeek
年と週番号の組み合わせ。YYYYWWで表される。
ga:isoWeek
ISO規格に準じた週番号。毎週月曜日から始まる。
ga:isoYear
ISO規格に準じた年。
ga:isoYearIsoWeek
ISO規格に準じた年と週番号の組み合わせ。YYYYWWで表される。
ga:nthHour
指定した期間内における時間番号。000000〜。例えば、2014年6月4日から2014年6月5日までのデータを取得した時の、000003は、2014年6月4日3時のデータとなる。

Audience

ディメンション

ga:userAgeBracket
ユーザーの年代。
ga:userGender
ユーザーの性別。
ga:interestOtherCategory
インタレストカテゴリ。指定カテゴリに関心を持ち、購入意欲があると判定されたユーザー分類。
ga:interestAffinityCategory
アフィニティカテゴリ。指定カテゴリに関心を持つと判定されたユーザー分類。
ga:interestInMarketCategory
インタレストマーケットカテゴリ。指定カテゴリの製品、サービスの購入意欲があると判定されたユーザー分類。

ダウンロード

この記事で紹介したサンプルプログラムを配布しています。よろしければ、ご利用下さい。

ファイル一覧

SYNCER00223
analytics.php Download
analytics-user-summary.php Download
analytics-keywords.php Download
analytics-referrer.php Download
analytics-monthly-pageview.php Download
analytics-device.php Download
autoload.php

ファイル名をクリックすると内容を確認できます。「Download Zip」をクリックするとファイル一式をダウンロードできます。

autoload.phpはzipファイルの中に含まれていません。

Download Zip