如何从GA API中检索大量页面的总视图数

时间:2013-08-14 14:05:14

标签: google-api google-analytics-api

我们对Google Analytics核心报告API中合并的不同页面的统计信息感兴趣。我发现同时查询多个页面的唯一方法是创建一个类似的过滤器:

ga:pagePath==page?id=a,ga:pagePath==page?id=b,ga:pagePath==page?id=c

这会在GET查询的filter参数内转义。

然而,当GET查询超过2000个字符时,我得到以下响应:

414. That’s an error.

The requested URL /analytics/v3/data/ga... is too large to process. That’s all we know.

请注意,就像在示例调用中一样,每页不同的唯一部分是pagePath中的GET参数,但我们必须使用OR指定两个指标(pagePath)的新过滤器以及路径中始终相同的部分。

有没有办法指定大量不同的页面来查询而不在GET查询中达到此限制(我找不到任何执行POST请求的文档)?或者有没有其他方法可以为每个查询创建最多X个不同页面的批次并在我的结尾添加它们?

2 个答案:

答案 0 :(得分:2)

您应该将其用作维度,而不是将ga:pagePath用作过滤器的一部分。每种查询最多可以获得10,000行,并分页以获得所有结果。然后解析结果客户端以获得所需内容。另外,根据您的站点结构或页面名称,使用过滤器来尽可能缩小结果范围。

答案 1 :(得分:0)

我正在共享一个示例代码,您可以通过Items PerPage

的帮助获取超过10,000个记录数据
private void GetDataofPpcInfo(DateTime dtStartDate, DateTime dtEndDate, AnalyticsService gas, List<PpcReportData> lstPpcReportData, string strProfileID)
        {
            int intStartIndex = 1;
            int intIndexCnt = 0;
            int intMaxRecords = 10000;

            var metrics = "ga:impressions,ga:adClicks,ga:adCost,ga:goalCompletionsAll,ga:CPC,ga:visits";
            var r = gas.Data.Ga.Get("ga:" + strProfileID, dtStartDate.ToString("yyyy-MM-dd"), dtEndDate.ToString("yyyy-MM-dd"),
                                    metrics);
            r.Dimensions = "ga:campaign,ga:keyword,ga:adGroup,ga:source,ga:isMobile,ga:date";
            r.MaxResults = 10000;            
            r.Filters = "ga:medium==cpc;ga:campaign!=(not set)";

            while (true)
            {
                r.StartIndex = intStartIndex;
                var dimensionOneData = r.Fetch();
                dimensionOneData.ItemsPerPage = intMaxRecords;

                if (dimensionOneData != null && dimensionOneData.Rows != null)
                {
                    var enUS = new CultureInfo("en-US");
                    intIndexCnt++;

                    foreach (var lstFirst in dimensionOneData.Rows)
                    {
                        var objPPCReportData = new PpcReportData();

                        objPPCReportData.Campaign = lstFirst[dimensionOneData.ColumnHeaders.IndexOf(dimensionOneData.ColumnHeaders.FirstOrDefault(h => h.Name == "ga:campaign"))];
                        objPPCReportData.Keywords = lstFirst[dimensionOneData.ColumnHeaders.IndexOf(dimensionOneData.ColumnHeaders.FirstOrDefault(h => h.Name == "ga:keyword"))];                       

                        lstPpcReportData.Add(objPPCReportData);
                    }
                    intStartIndex = intIndexCnt * intMaxRecords + 1;
                }
                else break;
            }
        }

只有一件事是您的查询长度不应超过2000个奇数字符