2011年07月26日に投稿

[PHP]ライブラリに頼らずにGoogle Data Export APIを利用してGoogle Analyticsからページビューを取得する

Google AnalyticsにはAPIが用意されており、外部からデータを取得することができます。Google Data Export APIというAPIを利用するのですが、認証からデータ取得までの手順を簡略化するためにライブラリがいくつか存在します。ですがこの記事ではそれらのライブラリを使用せずにデータを取得するサンプルコードを公開します。


以下のサンプルコードは指定した期間のサイト全体のページビューを取得するためのコードです。このコードを実行するとページビュー数だけがぽつりと表示されます。

[php]
‘GOOGLE’,
‘Email’ => ‘info@example.com’,
‘Passwd’ => ‘yourpassword’,
‘service’ => ‘analytics’,
‘source’ => ‘Sample’
);

$options = array(
‘http’ => array(
‘method’ => ‘POST’,
‘content’ => http_build_query($data)
)
);

$response = @file_get_contents(‘https://www.google.com/accounts/ClientLogin’, false, stream_context_create($options));
$auth = explode(“\n”, $response);

#データ取得
$header = array(
‘Authorization: GoogleLogin auth=’. substr($auth[2], 5,1024)
);

$options = array(
‘http’ => array(
‘method’ => ‘GET’,
‘header’ => $header
)
);

$response = @file_get_contents(‘https://www.google.com/analytics/feeds/data?ids=ga:47745665&metrics=ga:pageviews&start-date=2011-07-25&end-date=2011-07-25&v=2’, false, stream_context_create($options));
$xml = simplexml_load_string($response);
print $xml->entry->children(‘dxp’, true)->metric->attributes()->value;
?>
[/php]

大きく分けて2つの部分に分けることができます。認証とデータ取得です。

1. 認証

Google Analyticsからデータを得るためにはまず認証をする必要があります。データを見る資格があるかどうかのチェックですね。「https://www.google.com/accounts/ClientLogin」に対してGoogle AnalyticsのIDとパスワードをパラメータとしてセットして、POSTリクエストを送信を行います。このコードを流用する場合は、メールアドレスとパスワードをご自分のアカウントのものにして下さい。そうすると認証キーのような長い文字列が改行区切りで返ってきます。その中の「Auth=」に続くキーを取り出して変数に保存しておきます。Authの他にも2つのキーが返されますが、ページビューを取得する段階では使わなくても良いようです。

2. データ取得

先ほど保存した、Authのキーをヘッダーにセットして「https://www.google.com/analytics/feeds/data」に対してGETリクエストを送信します。どんなデータを取得したいのかによってGETリクエストのパラメータを変更して下さい。ここでは、下記のようにパラメータを指定しています。

 ids=ga:47745665 → Google AnalyticsのプロファイルIDです。
 metrics=ga:pageviews → 取得したいデータの種類を指定します。ページビューが欲しい場合はこうします。
 start-date=2011-07-25 → データ取得範囲の開始日です。
 end-date=2011-07-25 → データ取得範囲の終了日。1日分だけなので開始日と同じ日を指定しています。
 v=2 → バージョンの指定です。ドキュメントに2を指定するように書いてあった気がしますので指定しています。

もちろんパラメータにはもっと種類がありますので、詳しい仕様はGoogleの「ディメンションと指標のリファレンス」を参照して下さい。

XMLで結果が返却されますのでおなじみのsimplexml_load_stringでパースをして「$xml->entry->children(‘dxp’, true)->metric->attributes()->value」とアクセスするとページビューを取得できます。

関連記事

Leave a Reply