如何在Google Analytics API中按自定义参数过滤?
我正在尝试从Google Analytics API获取我网站上访问量最多的页面列表。目前我有以下代码,它返回每个页面的标题、网址和访客数量:
data_query = service.data().ga().get(**{
'ids': 'ga:123456789',
'dimensions': 'ga:pageTitle,ga:pagePath',
'metrics': 'ga:pageviews',
'start_date': '2013-12-31',
'end_date': '2014-04-29',
'sort': '-ga:pageviews',
})
feed = data_query.execute()
问题是我网站的所有页面都可以用西班牙语或英语显示,所以我得到了同一个网址的重复行,例如:
[
['/index/', 'Inicio', 23],
['/index/', 'Home', 57],
]
为了能够按语言过滤结果,我想要得到这样的结果:
[
['/index/', 'Inicio', 23, 'es'],
['/index/', 'Home', 57, 'en'],
]
根据Google Analytics的说明,我创建了一个新的维度'lang'('dimension1'),在我的html模板中,我根据当前语言动态传递它的值,比如en
或es
:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'xxx', 'yyy');
ga('send', 'pageview');
ga('set', 'dimension1', 'en'); // <----- or 'es'
</script>
但是这个查询
data_query = service.data().ga().get(**{
'ids': 'ga:123456789',
'dimensions': 'ga:pageTitle,ga:pagePath,ga:dimension1',
'metrics': 'ga:pageviews',
'start_date': '2013-12-31',
'end_date': '2014-04-29',
'sort': '-ga:pageviews',
})
总是返回一个空列表。
更新:
结果发现维度是设置好的,但ga没有正确发送这个值,这段代码解决了这个问题:
ga('send', 'dimension1', 'en');
2 个回答
0
你确定在这里:
ga('set', 'dimension1', 'en'); // <----- or 'es'
你设置了一个维度吗?
也许你是把它当成一个指标来设置的,但你却称它为维度。
顺便说一下,如果你确定你设置的是维度,我觉得把它设置成指标会更好,因为这其实是对页面路径的描述。
在分析工具中,你已经有了语言这个维度。
0
看起来这个问题在这里解决了:http://axiacore.com/blog/how-get-list-most-popular-pages-google-analytics-python/ 也许对你也有帮助。