使用GAPI创建包含综合浏览量和唯一身份访问者的报告

时间:2010-11-12 13:28:43

标签: php api google-analytics

我正在使用GAPI尝试从我们的Google Analytics数据创建简单报告。 我的内部客户希望看到每页有2个字段的概述:综合浏览量和唯一身份访问者。 我有浏览量部分工作,但我不能让独特的访问者部分工作。 这是我目前的代码。过滤器是他们可以更改的参数,但现在是硬编码的:

require 'gapi.class.php';

$ga = new gapi(ga_email,ga_password);

$filter = 'pagepath =~ ^/home$';
$ga->requestReportData(ga_profile_id,
                        array('pagepath'),
                        array('pageviews'),
                       'pageviews',
                       $filter,
                       '2010-10-01',
                       '2010-10-31');

然后是一些代码来显示这里没有真正相关的结果。 如上所述,这是有效的,但如果我将“访问者”添加到指标,如下所示:

$ga->requestReportData(ga_profile_id,
                       array('pagepath'),
                       array('pageviews','visitors'),
                       '-pageviews',
                       $filter,
                      '2010-10-01',
                      '2010-10-31');

然后我收到此错误:

PHP Fatal error:  Uncaught exception 'Exception' with message 'GAPI: Failed to request report data. Error: "Illegal combination of dimensions and metrics"' in gapi.class.php:218

Stack trace:
#0example.filter.php(24): gapi->requestReportData('30296235', Array, Array, '-pageviews', 'pagepath =~ ^/h...', '2010-10-01', '2010-10-31')
#1 {main}
thrown in gapi.class.php on line 218

2 个答案:

答案 0 :(得分:0)

Google AnalyticsAPI限制了它可以向您展示的组合。具体而言,visitors(不要与visits混淆)严重限制了它可以使用的指标。 visitorshour是您可以在Google Analytics中查询的两个受限制最严格的指标和维度。因此,您尝试的上述组合无效,Google拒绝计算它。只需将其切换为visits即可。

请注意,在此valid combinations页面上,几乎所有指标都会限制visitors

原因可能是visitors计算成本更高,有时无法计算,而且说实话,并不是特别有用。 visitorvisits的汇总,但约束到特定的Cookie集,而访问只是访问者的一个特定会话。它也没那么有用,因为visitors没有将1:1映射到人。例如,我在家庭和工作计算机以及iPhone上从Safari,Chrome和Firefox访问StackOverflow。所以我认为我是7位访客!它不是跟踪用户的有用方式。通过更加有限的方式访问,提供更好的视角。

此外,由于访问者跨越多个会话,因此您无法拥有pagePath个会话。

答案 1 :(得分:0)

将您的维度更改为“userDefinedValue”

$ga->requestReportData(ga_profile_id,
                        array('userDefinedValue'),
                        array('pageviews'),
                       'pageviews',
                       $filter,
                       '2010-10-01',
                       '2010-10-31');