如何在Google Analytics API中按自定义参数过滤?

4 投票
2 回答
1521 浏览
提问于 2025-04-18 04:48

我正在尝试从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模板中,我根据当前语言动态传递它的值,比如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',
})

总是返回一个空列表。


更新:

结果发现维度是设置好的,但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/ 也许对你也有帮助。

撰写回答