Google Analytics非常强大,但是免费版的有诸多的限制,比如:Google analytics里面最多的记录是5000,而免费的API最多是100W,如果要做细致,个性化的分析,无疑是需要用到API,下面来介绍如何通过R来连接Google Analytics的API来获取数据。
原理
在谷歌API后台创建一个服务器ID,然后给该ID在Google Analytics的账户级别的用户管理里面授予分析的权限,然后在API创建OAuth 2.0型的ID和秘钥,这个就是放在程序里面的。
设置过程
创建服务账号
谷歌API管理里创建服务账号密钥,创建的地址:https://console.developers.google.com/apis/api?,进入后先创建一个项目,然后选择凭据》创建凭据,选择服务账号密钥
给服务ID授权
在Google Analytics 账户级别的给这个服务器ID授权,权限级别是分析的即可,如:
创建客户端ID
然后返回到谷歌API管理界面,创建 OAuth 2.0授权,一般选择的应用类型是web,如果不知道就选择其他,这个是通用型的:
R中运行
然后在R上
<span style="font-size: 12pt;">library(RGoogleAnalytics) library(httpuv) require(RGoogleAnalytics) token <- Auth(client.id=paste("156582067107-2c86adfpnook88a9fnn1knu7egbpjst7st.", "apps.googleusercontent.com", sep=""), #客户端ID分拆开 client.secret="bKu-j2SYVpbkQYWAydfvuFepKJ") #客户端密码 #save(token,file="./1token_file") #保存密钥信息,下次使用的时候直接能用 ValidateToken(token) query.list <- Init(start.date = "2017-2-3", # 设置开始日期 end.date = "2017-2-13", # 设置结束日期 dimensions = "ga:date", metrics ="ga:newUsers,ga:users,ga:pageviews", max.results = 50000, #filters = "ga:pagePath=@/li/ch.php?", #segments="users::condition::ga:dimension1=~[a-zA-z0-9]", #sort = "-ga:totalEvents", table.id = "ga:1115520585") #核心查询函数 ga.query <- QueryBuilder(query.list) ga.data <- GetReportData(ga.query, token, split_daywise = T) write.csv(ga.data,file="D:/gadata/test.csv") # 设置导出文件名</span>
如果没有的包,自行下载。包RGoogleAnalytics是已经将分页查询的功能内置,所以通过这个查询出来的数据都是尽可能不抽样。上述代码中的table.id就是view id。
下面试运行下:
可以看到数据已经导出来了。
核心函数里面的配置可以看:GA核心API中get函数返回结果解析