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 - 記事を開く)



プロフィール

コヤナギ トモヤ

まったりウェブ系コーダーしてます。PHP製静的CMS Pickles 2 を開発しています。

RSSフィード

  • このサイトは、 コヤナギ トモヤ の個人サイトです。
  • 個人的な主張や、活動の記録などを掲載しています。 所属する企業、団体、その他の意見や立場を代表するものではありません。
  • 掲載された内容は古くなっている可能性があります。 特に古い記事では、現在の筆者の考えと異なる主張をしていることがありますが、記録としてそのまま残しております。 予めご了承ください。
ページの先頭へ戻る