PHPで Google Analytics API に入門してみた。

PHPで Google Analytics API を使ってみたので、そのメモ。ドキュメント Google Analytics Developer Docs を見て進めた。

概要

Google Analytics APIを使う方法は、JavaScriptとか、Javaとか、HTTP Protocol とか、いろいろ用意されているみたい。今回は、PHPからアクセスしたいので、HTTP Protocol をやってみる。

まずは Google Analytics API に認証する

APIを使う前に、Google Analytics API にログインしなくてはならない。認証する方法は、Data Export API - Authorization に書かれている。

認証方法は 「ClientLogin」「AuthSub」「OAuth」と、よくわからないが3種類あるようだ。今回は、HTTP Protocol で ClientLogin を使うことにする。

概要は次の通り。

  • https://www.google.com/accounts/ClientLogin に、POST でリクエストする。
  • Content-Type は application/x-www-form-urlencoded とする。

POST送信するパラメータは次の通り。

accountType 認証したいアカウントの種類。デフォルトは GOOGLE。これは Google Analytics がサポートする唯一の選択肢だそうだ。
Email ユーザのメールアドレス。必ずドメイン部分を含むこと。 (例: joe@gmail.com)
Passwd ユーザのパスワード。
service サービス名。Google Analytics のサービス名は analytics なので、そう指定する。(他のサービス名については、サービス名一覧を参照)
source あなたのクライアントアプリケーションの名称。${会社名}-${アプリケーション名}-${バージョンID} のような形式で送信する。

このリクエストの結果、認証に失敗した場合は、HTTP ステータスコード 401 Unauthorized が返却される、とある。(が、実際に誤った認証情報で送信してみたら、なぜか 403 Forbidden が返ってきた。謎だがまぁいいや。)

認証に成功すると、HTTP ステータスコード 200 OK と、ボディ部に SID, LSID, and Auth の3つの値が返却される。

返ってきた3つの値は、次のような形で取得できた。

SID=${値}(LF)
LSID=${値}(LF)
Auth=${値}(LF)
  • ${値}は長い文字列の値です。
  • (LF)は改行コードを表現しています。

これを分解して、それぞれ値を取得する。

ここで取得した3つの値は、その後の通信で使用するので、覚えておかなければならない。しかし、具体的にどう使うのかは、Google Analytics のドキュメントからは探せなかったのでGoogle Apps Email Migration API デベロッパー ガイド: プロトコル(日本語)を参考にした。HTTPリクエストヘッダーに、次のように値を付加して使うもののようだ。

Authorization: GoogleLogin auth=${取得したAuth値}

アカウントデータを取得する

ドキュメントにある手順に従って、Account Feed Request をしてみる。

次のURLに、GETでアクセスする。特にパラメータは付加しないが、HTTPリクエストヘッダに例の認証文字列 Authorization: GoogleLogin auth=${取得したAuth値} を追加する必要がある。

https://www.google.com/analytics/feeds/accounts/default

返却されたデータはXML形式で、認証したユーザが登録しているプロファイルの一覧などのデータが含まれているようだ。

この中に、プロファイルを特定するプロファイルIDが含まれている。次のようなdxp:propertyタグにvalue属性値として指定されている数値がそれなので、確認しておく。

<dxp:property name='ga:profileId' value='${プロファイルID}'/>

レポートデータを取得する

最後に、レポートデータを取得してみる。これもドキュメントに記載されているサンプルの通り、そのままリクエストしてみた。

ただし、idsの欄には、取得したいプロファイルのプロファイルIDを指定する必要がある。プロファイルIDは、さきほど取得したアカウントデータの中に含まれていたものだ。

https://www.google.com/analytics/feeds/data
?start-date=2008-10-01
&end-date=2008-10-31
&dimensions=ga:source,ga:medium
&metrics=ga:visits,ga:bounces
&sort=-ga:visits
&filters=ga:medium%3D%3Dreferral
&max-results=5
&ids=ga:${プロファイルID}
&prettyprint=true
  • ※実際は改行なしです。

こちらも結果はXML形式で取得できた。

まとめ

取得したデータの読み方や、欲しいデータの詳細なリクエスト条件などはまだ不明だが、とりあえず Google Analytics API にログインして、何かしらのデータを取得することはできたので、入門できましたってことにしとく。

詳しい構造については、また今度調べてみます。(Data API - Account FeedData API - Data Feedを見ればわかりそう)

今回作成したサンプルソース(PHP)は下記。

次の手順でお試しくださいませ。

  • まずZIPを解凍。すると、index.phpPxHTTPAccess.php が生成される
  • index.php の11行目付近にアカウント情報の入力欄があるので、ご自分のアカウント情報に書き換える。
  • ウェブサーバの任意のパスにアップして、index.php を実行する。

トラックバック (1件)

2010年2月17日(Wed) 12時09分36秒 Google Analytics APIでアクセスをグラフ表示

PHPを利用し、Google Analytics APIでアクセスを表示するサンプルです。
棒グラフは「Google Chart API」を使用しています。
...

( Design Lab - 記事を開く)



プロフィール

コヤナギ トモヤ

ウェブ系エンジニアしてます。ウェブデザイナー、ウェブディレクターとしてウェブ制作の仕事に携わり、今はエンジニア職に流れ着きました。誰かのお仕事をちょっとだけ効率化するような支援ツールの開発が好き。オープンソースとMITライセンス大好き。人生後半は自由と民主主義のコントリビューターとして過ごす予定。

ウェブ制作支援ツール Pickles 2 をオープンソースで開発しています。

PHP/JavaScript/NodeJS/nwjs/Laravel/Pickles2/オープンソース/心理学/倫理/自由と民主主義

RSSフィード

ページの先頭へ戻る