所以我所做的是,我設置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;
}
的10K記錄的限制可以在網絡上不同的地方被發現。當您遇到此限制時,與Google聯繫可能很有用。 – CodeCaster
是的,它是預期的。 –