public void Method1(GARequestConfig requestConfig) { GAApiHelper helper = ClassFactory.Get <GAApiHelper>( new ConstructorArgument("userConnection", UserConnection) ); DataTable result = helper.GetData(requestConfig); }
public DataTable GetData(GARequestConfig requestConfig) { var reportRequest = requestConfig.CreateReportRequest(); GetReportsRequest requestContainer = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; DataTable dt = new DataTable(); foreach (var dimension in reportRequest.Dimensions) { dt.Columns.Add(dimension.Name); } foreach (var metric in reportRequest.Metrics) { dt.Columns.Add(metric.Alias ?? metric.Expression); } while (requestContainer.ReportRequests.Count > 0) { GetReportsResponse response = AnalyticsService.Reports.BatchGet(requestContainer).Execute(); requestContainer.ReportRequests = new List <ReportRequest>(); foreach (Report report in response.Reports) { var dimensionHeaders = report.ColumnHeader.Dimensions; var metricHeaders = report.ColumnHeader.MetricHeader.MetricHeaderEntries; foreach (ReportRow row in report.Data.Rows) { var dimensionValues = row.Dimensions; var metricValues = row.Metrics; var dataRow = dt.NewRow(); for (int i = 0; i < dimensionHeaders.Count && i < dimensionValues.Count; i++) { dataRow[dimensionHeaders[i]] = dimensionValues[i]; } for (int l = 0; l < metricValues.Count; l++) { DateRangeValues values = metricValues[l]; for (int i = 0; i < values.Values.Count && i < metricHeaders.Count; i++) { dataRow[metricHeaders[i].Name] = values.Values[i]; } } dt.Rows.Add(dataRow); } if (!String.IsNullOrEmpty(report.NextPageToken)) { requestConfig.NextPageToken = report.NextPageToken; requestContainer.ReportRequests.Add(requestConfig.CreateReportRequest()); } } } return(dt); }