如何根据Google AnalyticsAPI中的自定义参数进行过滤?

时间:2014-04-29 20:27:28

标签: python google-analytics google-analytics-api

我试图从Google AnalyticsAPI获取mu网站访问量最大的网页列表。目前,我有以下代码,并返回一个列表,其中包含每个页面的标题,网址和访问者数量:

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模板中,我根据当前语言enes动态传递其值:

<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',
})

aways给我一个空列表。


更新

事实证明维度已经设置,但是ga没有正确发送值,而且这段代码做了这件事:

ga('send', 'dimension1', 'en');

2 个答案:

答案 0 :(得分:0)

你确定在这里:

ga('set', 'dimension1', 'en');   // <----- or 'es'

你设定了一个维度?

也许您将其设置为指标,并将其称为维度。

顺便说一句,如果您确定自己设置了维度,我认为最好像设置指标一样设置,因为这是de pagePath的描述。

您已拥有Google Analytics中的语言维度。

答案 1 :(得分:0)

似乎它已在此修复:http://axiacore.com/blog/how-get-list-most-popular-pages-google-analytics-python/也许它也适用于你。