Ascii.jpでの連載、Analyticsで検索トラフィックのアクセス解析、の途中までをなぞった。
変化率ほどのデータがないので、データの引き算だけ。 ほとんどゼロだし。
以前、書いたpythonライブラリで、データを並べて, google-spreadsheetまで、持ってくるところまでやる。
そして、それをlist-viewの形にする。
https://spreadsheets.google.com/lv?key=0AjYVCUWmaoq6dHJHM3FUYkhtZlBTWGRMSG1EenVDRVE&f=0
これで、期間データの比較をspreadsheetに落とすまで、自動化できた。
データについては、wiki.slash-reader.comは、当初 google sitesに魅せられて始めたが、google analyticsに興味が移ってしまって、コンテンツのてこ入れができない。
また、blog.slash-reader.comと、このabc-analytics.comをまとめる必要がある。
pythonのコード。
pythonのリスト処理に、まだ時間が掛かってしまう。何時間もかかった、エクセルの生産性に追いつけない。
import gdata.analytics
import gdata.docs
import datetime
import os
import re
#import pdb;pdb.set_trace()def getGaData(dimensions, metrics, flt, sort, sdate, edate):
gas = gdata.analytics.service.AnalyticsDataService()
gas.ClientLogin("email”, "pw")
# 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
data = gas.GetData(id,
‘,’.join(dimensions).rstrip(),
‘,’.join(metrics).rstrip(),
flt, sort,
sdate, edate,
1, 1000)
data = [[x.dimension , x.metric] for x in data.entry]
header = [x.replace("ga:","") for x in dimensions + metrics]
#import pdb;pdb.set_trace()
data.insert(0,header)
return datadef writeCSV(iter, filesuffix):
import csv
filesuffix = [] if filesuffix == None else filesuffix
filename = os.getenv("HOME")
filename += "/ga_data/GA-"
filename += "-".join([x.strftime("%Y%m%d") for x in filesuffix])
filename += ".csv"
writer = csv.writer(file(filename,"wb"))
writer.writerows(iter)
return filenamedef putSpData(filename):
import re
f, ext = filename.split(".")
f = re.sub(r’.*/’,”,f)
tp = gdata.docs.service.DOCUMENT_LABEL
cl = gdata.docs.service.DocsService()
cl.ClientLogin(“name”, ‘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()
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__":
dimensions = ["ga:source", "ga:keyword"]
metrics = ["ga:visits","ga:newVisits"]
d1_sd = datetime.date(2009,9,1)
d1_ed = datetime.date(2009,9,9)
d2_sd = datetime.date(2009,9,10)
d2_ed = datetime.date.today()
flt = ""
sort = ""
d1 = getGaData(dimensions, metrics, flt, sort, d1_sd, d1_ed)
d2 = getGaData(dimensions, metrics, flt, sort, d2_sd, d2_ed)
header = d1[0]#df1,df2のデータ構造を揃える
df1 = dict( [ (tuple(x[0]), x[1] + [0,0]) for x in d1[1:]] )
df2 = dict( [ (tuple(x[0]), [0,0] + x[1]) for x in d2[1:]] )#df1,df2のmerge, merge方法は、[3:4]を更新する形
for k in df2:
if k in df1:
df1[k] = [df1[k][3:4], df1[k][3:4]]
else:
df1[k] = df2[k]
#import pdb;pdb.set_trace()
data = [[k[0],k[1]] + df1[k] for k in df1]
data.insert(0, header + ["ga:visits", "ga:newVisits"])
filename = writeCSV(data,[d1_sd,d1_ed,d2_sd,d2_ed])
putSpData(filename)