Google Analytics を利用してイマシアンで人気のページを集計しているのに使ってます。
基本的には公式ドキュメントを見れば、特につまることなく進められるかと。
【環境の設定】
gdata-analytics-2.1.jar
gdata-analytics-meta-2.1.jar
gdata-core-1.0.jar
google-collect-1.0-rc1.jar
jsr305.jar
こいつらをクラスパスに通す。
【Analytics アカウントの認証】
これもまんま公式コピペでおkなのだが一応書くと
// Credentials for ClientLogin Authorization AnalyticsService analyticsService = new AnalyticsService("Data Export for www.imashian.com"); int i = 0; while (i < 10) { try { analyticsService.setUserCredentials(CLIENT_USERNAME, CLIENT_PASS); break; } catch (Exception e) { System.out.println("----------- retry ----------"); i++; continue; } }
ちょいちょい失敗するので気休めにリトライ。
【クエリ生成】
TABLE_IDに関しては、確認するのがめんどくさいので、
Data Feed Query Explorerで認証して確認するといい。
しかもこれを使って、クエリのテストができるのでいろいろ試せる。先生に感謝。
一般的なクエリが色々参考になる。
/* Create a query using the DataQuery Object. */ DataQuery query = new DataQuery(new URL("https://www.google.com/analytics/feeds/data")); query.setStartDate(startDate); query.setEndDate(endDate); query.setDimensions("ga:pagePath"); query.setMetrics("ga:pageviews"); query.setFilters("ga:pagePath=~^/entry/.*"); query.setSort("-ga:pageviews"); query.setMaxResults(20); query.setIds(TABLE_ID); DataFeed dataFeed = analyticsService.getFeed(query.getUrl(), DataFeed.class); for (DataEntry entry : dataFeed.getEntries()) { System.out.println( "nPagePath = " + entry.stringValueOf("ga:pagePath") + "nPageviews = "+ entry.stringValueOf("ga:pageviews")); }
フィルターに関してはフィルタ構文で様々な条件を設定できる。
上記の例だと、/entry/ から始まるページパスを抽出となる。
これで、/entry/ 以下のアクセス数上位が取得できるので、色々やるだけ。
appEngineのアプリはいかに高速に処理するかを考えるのが難しい。・・・だがそれがいい。
こんな感じで、参照元から逆アクセスランキングも作ろうと思ったけど、
ライブドアブログなど、同ホストから各ブログを分けるのがめんどくさすぎたので余裕で断念。
まとめブログ御用達のACR WEBを利用するに至ったのである。