1

我开发了一个 Windows 控制台应用程序,它可以提取 Google Analytics 数据并写入 .CSV 文件。当在 Google Analytics 查询资源管理器上查询特定日期的数据时,它显示:-“您的查询匹配 96782 个结果...”。

问题是当我使用应用程序查询同一日期的数据时,默认情况下它只返回 1000 条记录,当我设置

DataResource.GaResource.GetRequest objRequest.MaxResult超过 10k,那么它给了我最多 10k 条记录。

有没有办法获得超过10k的记录。

4

2 回答 2

2

所以我所做的是,我设置 Request.MaxResult = 10000 和 Response.ItemsPerPage = 10000。至关重要的角色由具有分页机制的 Request.StartIndex 扮演,例如在第一个循环中,我们将获得 1-10000 行,然后是 10001-20000。 ...20001-30000 等等。

在循环下,对特定日期数据的请求最初设置为 Request.StartIndex = 1,然后在行数达到第 10000 行时连续增加到 MaxResult + 1 例如:- Request.StartIndex = 1 然后 10001 然后 20001 ... .30001...40001 依此类推,直到 Response.Rows == null。

这是我的代码:-

            StringBuilder sbrCSVData = new StringBuilder();
            int intStartIndex = 1;
            int intIndexCnt = 0;
            int intMaxRecords = 10000;

            AnalyticsService objAnaSrv = new AnalyticsService(objInit);
            string metrics = "ga:visitors,ga:visits,ga:visitBounceRate,ga:pageviews,ga:pageviewsPerVisit,ga:uniquePageviews,ga:avgTimeOnPage,ga:exits,ga:avgPageLoadTime,ga:goal1ConversionRate";
            DataResource.GaResource.GetRequest objRequest = objAnaSrv.Data.Ga.Get(strProfId, startDate,endDate, metrics);
            objRequest.Dimensions = "ga:visitCount,ga:browser,ga:browserVersion,ga:IsMobile,ga:screenResolution,ga:date,ga:hour";
            objRequest.MaxResults = 10000;

            while (true)
            {
                objRequest.StartIndex = intStartIndex;
                GaData objResponse = objRequest.Fetch();
                objResponse.ItemsPerPage = intMaxRecords;

                  if (objResponse.Rows != null)
                {
                    intIndexCnt++;
                    for (int intRows = 0; intRows < objResponse.Rows.Count; intRows++)
                    {
                        IList<string> lstRow = objResponse.Rows[intRows];
                        for (int intCols = 0; intCols <= lstRow.Count - 1; intCols++)
                        {
                            strRowData += lstRow[intCols].ToString() + "|";
                        }
                        strRowData = strRowData.Remove(strRowData.Length - 1, 1);
                        sbrCSVData.Append(strRowData + "\r\n");
                        strRowData = "";
                    }
                    intStartIndex = intIndexCnt * intMaxRecords + 1;
                }
                else break;
            }
于 2013-05-30T14:19:52.443 回答
0

是的,那里的文档中提到了这件事。要获取更多数据,一般做法是将其分解您的时间间隔或任何标准,然后执行多个查询以获取数据。阅读https://developers.google.com/analytics/devguides/reporting/core/v3/limits-quotas了解完整详情 希望对您有所帮助

于 2013-05-30T09:46:42.203 回答