Google api 如何从GA API检索合并的大量页面的总视图计数

Google api 如何从GA API检索合并的大量页面的总视图计数,google-api,google-analytics-api,Google Api,Google Analytics Api,我们对Google Analytics核心报告API中不同页面的统计数据感兴趣。我发现,要同时查询多个页面的统计信息,唯一的方法是创建如下过滤器: ga:pagePath==page?id=a,ga:pagePath==page?id=b,ga:pagePath==page?id=c 这个get在get查询的filter参数中被转义 但是,当GET查询超过2000个字符时,我会得到以下响应: 414. That’s an error. The requested URL /analyti

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

ga:pagePath==page?id=a,ga:pagePath==page?id=b,ga:pagePath==page?id=c
这个get在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参数,但我们必须使用一个或一个新的过滤器来指定度量(
pagePath
)以及路径中始终相同的部分


有没有办法在GET查询中指定要查询的大量不同页面而不达到此限制(我找不到任何用于执行POST请求的文档)?或者,除了为每个查询创建最多X个不同页面的批处理并将它们添加到my end之外,还有其他方法吗?

不要将ga:pagePath用作筛选器的一部分,而应该将其用作维度。通过这种方式,每个查询最多可以获得10000行,并分页以获得所有结果。然后在客户端解析结果以获得所需的内容。此外,如果可能的话,还可以根据您的网站结构或页面名称使用筛选器来缩小结果的范围。

我正在共享一个示例代码,您可以通过每页项目的帮助获取超过10000个记录数据

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;
            }
        }
private void GetDataofPpcInfo(DateTime dtStartDate、DateTime dtEndDate、分析服务气体、列表lstPpcReportData、字符串strProfileID)
{
int intStartIndex=1;
int intIndexCnt=0;
int intMaxRecords=10000;
var metrics=“ga:impressions,ga:adClicks,ga:adCost,ga:goalCompletionsAll,ga:CPC,ga:Visitions”;
var r=gas.Data.Ga.Get(“Ga:+strProfileID,dtStartDate.ToString(“yyyy-MM-dd”),dtEndDate.ToString(“yyyy-MM-dd”),
指标);
r、 Dimensions=“ga:campaign,ga:keyword,ga:adGroup,ga:source,ga:isMobile,ga:date”;
r、 MaxResults=10000;
r、 Filters=“ga:medium==cpc;ga:campaign!=(未设置)”;
while(true)
{
r、 StartIndex=intStartIndex;
var-dimensionedata=r.Fetch();
dimensionedata.ItemsPerPage=intMaxRecords;
if(dimensionedata!=null&&dimensionedata.Rows!=null)
{
var enUS=新文化信息(“美国”);
intIndexCnt++;
foreach(dimensionedata.Rows中的第一个变量)
{
var objPPCReportData=new PpcReportData();
objPPCReportData.Campaign=lstFirst[DimensionedOneData.ColumnHeaders.IndexOf(dimensionOneData.ColumnHeaders.FirstOrDefault(h=>h.Name==“ga:Campaign”));
objPPCReportData.Keywords=lstFirst[DimensioneData.ColumnHeaders.IndexOf(DimensioneData.ColumnHeaders.FirstOrDefault(h=>h.Name==“ga:关键字”));
添加(objPPCReportData);
}
intStartIndex=intIndexCnt*intMaxRecords+1;
}
否则就断了;
}
}

唯一值得注意的是,您的查询长度不应超过2000多个字符

您最终必须执行多个查询。有一种方法可以获取数据,但在提供PageID时,必须将其放入过滤器中。过滤器的总长度不能超过2000个字符。您要查询多少页?如果它使总查询长度小于2000,那么请让我知道我在哪里获得上述实现的帮助