google analytics の pageTracker._link

 

googlenのhelpに、cross domainの場合に、単一のprofileでデータを追う場合の方法があって、

http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55503

この通りなんだけど、英語なので、すっ飛ばして読んで、

<a href=”www.hoge-next.com” onclick=”pageTracker._link(this.href);return false;”>hoge-next</a>

のところだけいれると、linkにfollowされない。

<a>タグは、クリックされると、onclickにある処理を実行して、次にhrefにある処理を実行する。

で、上記の記事 の1のcode(pageTracker._allowLink(true))をいれとかないと、pageTracker._linkは想定した通りの処理をしない。単に、undefinedが返るだけ。

想定された処理の場合は、linkが実行されるので、あとは実行されない。

そうでない場合は、何かがおかしいので、linkを実行させない(href属性を実行させない)ように、onclickにreturn falseを入れておく。そうすると、linkを実行されない。

なので、なんらかの問題が合った場合に、href属性を実行させたくない場合は、return falseをいれとくのがいい。

実行させたい場合は、 そのままにしとく。 return falseは書かないでおく。

Google Analytics Data APIを試す。続き

昨日の続きで、単に、CSVの形にして出す。

昨日のところの、metricを複数にして、csv書き込み、google-docsにuploadをするまで。

analyticsを解析するアイデアも浮かばないし、何より分析するようなデータがないので、これでdata apiはしまいにして、google analytics自体の勉強にもどろうと思う。下に書いたコードを張っておく。


import gdata.docs
import datetime
def getGaData():
   gas = gdata.analytics.service.AnalyticsDataService()
   gas.ClientLogin("hoge", "pwd")
   # profileを集めてくる。
   lt = gas.GetAccountList()
   # そのprofileのtableIdを取る。tableIdが複数の場合は知らない
   id = [x.tableId[0].text for x in lt.entry][2]
   # このtableIdを元に、metricsとdimensionを指定する(10こずつ取れるようだけど、とりあえず一個,hour,pageviews)
   # for metrics
   metrics = ["ga:bounces", "ga:newVisits", "ga:pageviews", "ga:timeOnSite", "ga:visits"]
   dimensions = ["ga:hour"]
   data = gas.GetData(id, ".".join(dimensions), ",".join(metrics), "", "", datetime.date(2009,8,11), datetime.date(2009,8,30), 1, 1000)
   data = [x.metric for x in data.entry]
   hour = [x for x in range(24)]
   for (x,y) in zip(hour, data):
       y.insert(0, x)
   dimensions.extend(metrics)
   header = [[x.replace("ga:","") for x in dimensions]]
   header.extend(data)
   return header
def writeCSV(iter):
   import csv
   filename = "GoogleAnalytics-" + datetime.date.today().strftime("%Y%m%d") + ".csv"
   writer = csv.writer(file(filename,"wb"))
   writer.writerows(iter)
   return filename
def putSpData(data):
   filename = writeCSV(data)
   f, ext = filename.split(".")
   tp = gdata.docs.service.DOCUMENT_LABEL
   cl = gdata.docs.service.DocsService()
   cl.ClientLogin(‘hoge’, ‘pw’)
   checkFilename(f, cl)
   ms = gdata.MediaSource(file_path=filename,
                          content_type=gdata.docs.service.SUPPORTED_FILETYPES[ext.upper()])
   cl.Upload(ms, f)
def checkFilename(filename, cl):
   lt = cl.GetDocumentListFeed()
   import pdb; pdb.set_trace()
   item = [x for x in lt.entry if x.title.text==filename]
   if len(item) > 0:
       cl.Delete(item[0].GetEditLink().href)
if __name__ == "__main__":
   data = getGaData()
   putSpData(data)

Google Analytics Data API を試す

spreadsheet apiと同じような感じでいける。 同じデータ規格?だからか。

libraryは、pythonが充実してそうなので、これからpythonに慣れる必要がある。

interacive shell の ipythonは便利。rubyのirbより便利な気がするけど、irbは毎回 objectを inspectして出力してくるけど、ipythonはobjectの文字表示が少し不親切な気がする。代入式だと出ないし。

以下ので、時間別のpage-viewが出せた。

データは、最大で、7dimension, 10metricsを持ってこれる

クロス表の出力みたいなのが簡単にできそう。

# -*- coding: utf-8 -*-
import gdata.analytics
import datetime
gas = gdata.analytics.service.AnalyticsDataService()
gas.ClientLogin(“hoge”, “pw”)
# profileを集めてくる。
lt = gas.GetAccountList()
# そのprofileのtableIdを取る。tableIdが複数の場合は知らない
id = [x.tableId[0].text for x in lt.entry][2]
# このtableIdを元に、metricsとdimensionを指定する(10こずつ取れるようだけど、とりあえず一個,hour,pageview
s)
data = gas.GetData(id, “ga:hour”, “ga:pageviews”,””, “”, datetime.date(2009,8,11), datetime.date(2009,8,
30), 1, 1000)
# でータをtupleにして出力
r = [(x.dimension[0], x.metric[0]) for x in data.entry]
print r

#時間別のpage-view
[(00, 110),
(01, 51),
(02, 73),
(03, 5),
(04, 0),
(05, 0),
(06, 9),
(07, 5),
(08, 34),
(09, 134),
(10, 111),
(11, 46),
(12, 19),
(13, 44),
(14, 130),
(15, 92),
(16, 78),
(17, 146),
(18, 62),
(19, 56),
(20, 39),
(21, 28),
(22, 40),
(23, 24)]

続編 Google Analytics Data APIを試す。続き

trendlyに申し込む

google analytics blogで紹介されていたサービス trendlyに申し込んだ。

解析するようなデータはないけど、申し込んだ。さっき結果を知らせてくれるメールが来てた。

なんかデータがないせいか、よくわからん。ダッシュボードを見るのは有料なので、これ以上はわからかった。データの少ない人には、analyticsで十分だし、apacheのlogで十分なのかも。

でも、可能性は感じた。

OAuthを使ったビジネスの例

サイトに行って申し込みをすると、GoogleのOauthの認証画面に飛ばされる。で、データを見せる事に同意すると、google analyticsの情報の閲覧権限がtrendlyに行く。で、データを解析してもらう。

今まで、Oauthを使った例でいくと、twitterが認証を使ったり、最近では使われたりしている。ソシアルメディアでは、情報自体の動きを早めるため、よく使われてるイメージだった。

Cloudの中で、サービスを作って売る流れ

ビジネスインテリジェント?サービスみたいなのは、いままではコンサルタントさん達が、個別に手がけていて、データの加工とプレゼンみたいなのが、付加価値だったのかもしれない。

それが、加工サービスに関しては、analyticsやspreadsheetのapiの認証を、cloudの中のサービスにOauthで、渡してしまえば、データ加工はできあがりかもしれない。狭い意味でのセキュリティリスクも小さいように思う。(passwordを渡すより安全?)。ただ、データ認証渡しちゃった、、、みたいなのは多そうだけど。俺もしそう、、

妄想だけど、

そのうち、gmailのOauthの認証を使って、個人のカウンセリングをしてくれるサービスなんかもでるなあと思った。その場合は、セキュリティではなく、プライバシの問題があがってきそうだが。