public IEnumerable <AnalyticsReport> GetAnalyticsReport() { var service = new AnalyticsReportingService(new AnalyticsReportingService.Initializer() { HttpClientInitializer = _credential, ApplicationName = "app", }); var request = new GetReportsRequest { ReportRequests = new[] { new ReportRequest { ViewId = _viewId, Metrics = new[] { new Metric { Expression = "ga:pageviews" } }, Dimensions = new[] { new Dimension { Name = "ga:pagePath" } }, DateRanges = new[] { new DateRange { StartDate = "2018-04-01", EndDate = "today" } }, OrderBys = new [] { new OrderBy { FieldName = "ga:pageviews", SortOrder = "DESCENDING" } } } } }; var batchRequest = service.Reports.BatchGet(request); var response = batchRequest.Execute(); return(response.Reports[0].Data.Rows.Select(x => new AnalyticsReport() { Dimensions = x.Dimensions[0], Views = x.Metrics[0].Values[0] })); }
public async Task <IEnumerable <SendReportBody> > GetReports(Guid?jobId = null) { if (LOG.IsEnabled(LogLevel.Trace)) { LOG.LogTrace(nameof(GetReports)); } AssertInit(); var serverConfig = Configuration.ReportServer; AssertServerConfig(serverConfig); var dscRequ = new GetReportsRequest { AgentId = Configuration.AgentId, JobId = jobId, }; if (jobId == null) { var dscResp = new GetReportsAllResponse(); await SendDscAsync(serverConfig, GetReportsRequest.VERB, GetReportsRequest.ROUTE_ALL, dscRequ, dscResp); return(dscResp.Body.Value); } else { var dscResp = new GetReportsSingleResponse(); await SendDscAsync(serverConfig, GetReportsRequest.VERB, GetReportsRequest.ROUTE_SINGLE, dscRequ, dscResp); return(new[] { dscResp.Body }); } }
public IActionResult GetReportsAll(GetReportsRequest input) { if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace($"{nameof(GetReportsAll)}: {GetReportsRequest.VERB}"); } if (ModelState.IsValid) { _logger.LogDebug($"AgentId=[{input.AgentId}]"); var sr = _dscHandler.GetReports(input.AgentId.Value, null); return(this.Model(new GetReportsAllResponse { Body = new Model.GetReportsAllResponseBody { Value = sr, }, })); } return(BadRequest(ModelState)); }
public void GetGoogleReport(string viewIds, string apiQuery, DateTime startDate, DateTime endDate, string tempFileLocation, string localFilePath) { try { if (svc == null) { throw new Exception("No service available"); } var headers = new List <string>(); foreach (var viewId in viewIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { string pageToken = ""; var allResults = new List <Report>(); while (pageToken != null) { // pageToken = null; var request = new ReportRequest(); var firstDate = startDate.ToString("yyyy-MM-dd"); var lastDate = endDate.ToString("yyyy-MM-dd"); DateRange dateRange = new DateRange() { StartDate = firstDate, EndDate = lastDate }; request.DateRanges = new List <DateRange>() { dateRange }; request.PageSize = 10000; request.SamplingLevel = "LARGE"; request.ViewId = "ga:" + viewId; request.Metrics = GetMetrics(apiQuery); request.Dimensions = GetDimensions(apiQuery); request.PageToken = pageToken == "" ? null : pageToken; // send null for 1st request // get the report var body = new GetReportsRequest(); body.ReportRequests = new List <ReportRequest>() { request }; var reports = svc.Reports.BatchGet(body).Execute(); Thread.Sleep(1000); if (reports?.Reports?[0]?.Data?.RowCount != null) { allResults.AddRange(reports.Reports); pageToken = reports.Reports[0].NextPageToken; reports = null; } else { pageToken = null; } } if (allResults.Count > 0) { var apiResults = new ReportsTable(allResults, viewId); headers = apiResults.Headers; // add the report to the file AddToTempFile(apiResults, tempFileLocation); allResults = null; apiResults = null; } } MergeTempFileToFile(localFilePath, tempFileLocation, headers); } catch (Exception ex) { // error ocurred errorCount++; // remove tempfile File.Delete(tempFileLocation); // try again if (errorCount < 10) { Thread.Sleep(1000); GetGoogleReport(viewIds, apiQuery, startDate, endDate, tempFileLocation, localFilePath); } } finally { svc.Dispose(); } }
public List <KeywordResult> ReadKeywords() { var response = new GetReportsResponse(); var serviceAccountCredentialFilePath = Path.GetFullPath("Secret.json"); try { if (string.IsNullOrEmpty(serviceAccountCredentialFilePath)) { throw new Exception("Path to the service account credentials file is required."); } if (!File.Exists(serviceAccountCredentialFilePath)) { throw new Exception("The service account credentials file does not exist at: " + serviceAccountCredentialFilePath); } if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["GoogleServiceAccount"])) { throw new Exception("ServiceAccountEmail is required."); } // These are the scopes of permissions you need. It is best to request only what you need and not all of them string[] scopes = new string[] { AnalyticsReportingService.Scope.Analytics }; // View your Google Analytics data // For Json file if (Path.GetExtension(serviceAccountCredentialFilePath).ToLower() == ".json") { GoogleCredential credential; using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read)) { credential = GoogleCredential.FromStream(stream) .CreateScoped(scopes); } // Create the Analytics service. using (var svc = new AnalyticsReportingService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "AnalyticsReporting Service account Authentication" })) { var dateRange = new DateRange { StartDate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd"), EndDate = DateTime.Now.ToString("yyyy-MM-dd"), }; var pageviews = new Metric { Expression = "ga:pageviews", Alias = "Pageviews" }; var searchKeyword = new Dimension { Name = "ga:searchKeyword" }; var orderBy = new OrderBy { FieldName = "ga:pageviews" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { searchKeyword }, Metrics = new List <Metric> { pageviews }, PageSize = 10000, OrderBys = new List <OrderBy> { orderBy }, ViewId = ConfigurationManager.AppSettings["GoogleAnalyticsProfileId"] }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); response = batchRequest.Execute(); } } else { throw new Exception("Unsupported Service account credentials."); } } catch (Exception ex) { Console.WriteLine("Create service account AnalyticsReportingService failed " + ex.Message); throw new Exception("CreateServiceAccountAnalyticsReportingFailed ", ex); } return(GoogleDataFeedToRemoveDuplicatesOrBadWords(response)); }
public virtual async Task <GoogleAnalyticsResult> GetDataByDevice(DateTime startDate, DateTime endDate) { if (await _analyticsReportingService() == null) { return(ReturnEmpty()); } IList <DateRange> dateRanges = new List <DateRange>(); dateRanges.Add(new DateRange() { StartDate = startDate.ToString("yyyy-MM-dd"), EndDate = endDate.ToString("yyyy-MM-dd") }); //Metric IList <Metric> metrics = new List <Metric>(); metrics.Add(new Metric() { Expression = "ga:users", Alias = "Users" }); metrics.Add(new Metric() { Expression = "ga:newUsers", Alias = "Unique users" }); metrics.Add(new Metric() { Expression = "ga:pageviews", Alias = "Views" }); //Dimension IList <Dimension> dimensions = new List <Dimension>(); //dimensions.Add(new Dimension() { Name = "ga:browser" }); dimensions.Add(new Dimension() { Name = "ga:mobileDeviceInfo" }); //OrderBy IList <OrderBy> orderBys = new List <OrderBy>(); orderBys.Add(new OrderBy() { FieldName = "ga:pageviews", SortOrder = "DESCENDING", OrderType = "VALUE" }); //final assembling var request = new ReportRequest() { ViewId = _googleAnalyticsSettings.gaviewID, DateRanges = dateRanges, Metrics = metrics, Dimensions = dimensions, OrderBys = orderBys }; var requests = new List <ReportRequest>(); requests.Add(request); var reportsRequest = new GetReportsRequest(); reportsRequest.ReportRequests = requests; var response = await(await _analyticsReportingService()).Reports.BatchGet(reportsRequest).ExecuteAsync(); return(ParseResponse(response, startDate, endDate)); }
/// <summary> /// Fetches all required reports from Google Analytics /// </summary> /// <param name="reportRequests"></param> /// <returns></returns> private static GetReportsResponse GetReport(GetReportsRequest getReportsRequest, string jsonCredential) { var analyticsService = GetAnalyticsReportingServiceInstance(jsonCredential); return(analyticsService.Reports.BatchGet(getReportsRequest).Execute()); }
public GCustomReport Get(GCustomReportInitializer initializer) { var credetials = (config.CredentialServiceAccountJsonPath != null) ? new GCommonCredentialManager <GServiceAccountFileCredentialReceiver, GServiceAccountFileCredentialInitializer>().Get(new GServiceAccountFileCredentialInitializer(config.CredentialServiceAccountJsonPath, GConstants.Scopes)): new GCommonCredentialManager <GRestUserCredentialReceiver, GRestUserCredentialInitializer>().Get(new GRestUserCredentialInitializer(config.CredentialUserAccountJsonPath, GConstants.Scopes)); DateRange dateRange = new DateRange { StartDate = initializer.DateStart.ToString(GConstants.DateParamFormat), EndDate = initializer.DateEnd.ToString(GConstants.DateParamFormat) }; // Create the Metrics object. //Metric sessions = new Metric { Expression = "ga:sessions", Alias = "Sessions" }; //Create the Dimensions object. //Dimension browser = new Dimension { Name = "ga:browser" }; string nextPageToken = null; List <GetReportsResponse> responseList = new List <GetReportsResponse>(); // Create the ReportRequest object. do { ReportRequest reportRequest = new ReportRequest { ViewId = initializer.View.Id, PageToken = nextPageToken, IncludeEmptyRows = true, DateRanges = new List <DateRange>() { dateRange }, Dimensions = initializer.Dimensions.Select(x => new Dimension { Name = x.Name }).ToList(), Metrics = initializer.Metrics.Select(x => new Metric { Expression = x.Name, Alias = x.Name }).ToList() }; List <ReportRequest> requests = new List <ReportRequest> { reportRequest }; // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; // Call the batchGet method. AnalyticsReportingService s = new AnalyticsReportingService(new Google.Apis.Services.BaseClientService.Initializer { HttpClientInitializer = credetials.GoogleCredential }); GetReportsResponse response = s.Reports.BatchGet(getReport).Execute(); responseList.Add(response); nextPageToken = response.Reports.FirstOrDefault().NextPageToken; }while (nextPageToken != null); GCustomReport customReport = new GCustomReport(initializer) { Rows = new List <CustomReportRow>() }; foreach (var response in responseList) { var apiReport = response.Reports.FirstOrDefault(); if (apiReport?.Data?.Rows != null) { foreach (var row in apiReport.Data.Rows) { List <CustomReportCell> reportRowCells = new List <CustomReportCell>(); if (apiReport?.ColumnHeader?.Dimensions != null) { for (int i = 0; i < apiReport.ColumnHeader.Dimensions.Count; i++) { reportRowCells.Add(new GCustomDimensionValued(initializer.Dimensions.Where(x => x.Name == apiReport.ColumnHeader.Dimensions[i]).FirstOrDefault(), row.Dimensions[i])); } } if (apiReport?.ColumnHeader?.MetricHeader != null) { for (int i = 0; i < apiReport.ColumnHeader.MetricHeader.MetricHeaderEntries.Count; i++) { reportRowCells.Add(new GCustomMetricValued(initializer.Metrics.Where(x => x.Name == apiReport.ColumnHeader.MetricHeader.MetricHeaderEntries[i].Name).FirstOrDefault(), row.Metrics.FirstOrDefault().Values[i])); } } // reportRowCells.Add(new CustomReportCell(initializer.Columns[])) customReport.Rows.Add(new CustomReportRow(reportRowCells)); } } } return(customReport); }
public List <KeywordResult> ReadKeywords() { var response = new GetReportsResponse(); try { var credential = GetCredential().Result; using (var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Google Analytics API Console" })) { var dateRange = new DateRange { StartDate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd"), EndDate = DateTime.Now.ToString("yyyy-MM-dd"), }; var pageviews = new Metric { Expression = "ga:pageviews", Alias = "Pageviews" }; var searchKeyword = new Dimension { Name = "ga:searchKeyword" }; var orderBy = new OrderBy { FieldName = "ga:pageviews" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { searchKeyword }, Metrics = new List <Metric> { pageviews }, PageSize = 10000, OrderBys = new List <OrderBy> { orderBy }, ViewId = ConfigurationManager.AppSettings["GoogleAnalyticsProfileId"] }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); response = batchRequest.Execute(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(GoogleDataFeedToRemoveDuplicatesOrBadWords(response)); }
private GetReportsResponse QueryAnalyticsApi() { if (string.IsNullOrEmpty(_configs.GoogleConfigFilePath)) { throw new Exception("google credentials config file path is not provided"); } string json = System.IO.File.ReadAllText(_configs.GoogleConfigFilePath); var credentialsObj = JsonConvert.DeserializeObject <GoogleCredentialsModel>(json); var xCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(credentialsObj.Client_email) { Scopes = new[] { AnalyticsReportingService.Scope.AnalyticsReadonly } }.FromPrivateKey(credentialsObj.Private_key)); var baseClientInitializer = new BaseClientService.Initializer { HttpClientInitializer = xCred, ApplicationName = _configs.ApplicationName }; using (var svc = new AnalyticsReportingService(baseClientInitializer)) { var pageViewsRequest = new ReportRequest { ViewId = _configs.ViewId, Dimensions = new List <Dimension> { new Dimension { Name = "ga:pagePath" } }, Metrics = new List <Metric> { new Metric { Expression = "ga:pageviews", Alias = "PageViews" } }, OrderBys = new List <OrderBy> { new OrderBy { FieldName = "ga:pageviews", SortOrder = "descending" } }, HideValueRanges = true, }; if (StartDate.HasValue && EndDate.HasValue) { pageViewsRequest.DateRanges = new List <DateRange>() { new DateRange() { StartDate = StartDate.Value.ToString("yyyy-MM-dd"), EndDate = EndDate.Value.ToString("yyyy-MM-dd") } }; } if (!string.IsNullOrEmpty(_configs.Filter)) { pageViewsRequest.FiltersExpression = $"ga:pagePath={_configs.Filter}"; } if (_configs.PageSize != 0) { pageViewsRequest.PageSize = _configs.PageSize; } // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = new List <ReportRequest> { pageViewsRequest } }; var response = svc.Reports.BatchGet(getReport).Execute(); return(response); } }
public async Task <List <Dictionary <string, object> > > Read() { List <Dictionary <string, object> > result = new List <Dictionary <string, object> >(); try { var credential = await CGoogleAnalyticsGetCredential.GetCredential(this.authDetails.UserName); using (var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Google Analytics API Console" })) { var dateRange = new DateRange { StartDate = from.ToString("yyyy-MM-dd"), EndDate = to.ToString("yyyy-MM-dd") }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = dimensions, Metrics = metrics, ViewId = authDetails.ViewId }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); if (response.Reports.First().Data.Rows == null) { return(null); } foreach (var x in response.Reports.First().Data.Rows) { Dictionary <string, object> row = new Dictionary <string, object>(); for (int i = 0; i < dimensions.Count; i++) { row.Add(dimensions[i].Name, x.Dimensions[i]); } result.Add(row); } return(result); } } catch (Exception ex) { return(null); } }
protected void Page_Load(object sender, EventArgs e) { string credFile, filePath, csvFile, fromDate, toDate; fromDate = Request.QueryString["fromDate"]; toDate = Request.QueryString["toDate"]; if (string.IsNullOrEmpty(fromDate) || string.IsNullOrEmpty(toDate)) { Response.Write("Date range not specified. Must be in format yyyy-mm-dd"); } else { if (Request.IsLocal) { filePath = "C:\\Projects\\lyonsplace\\website\\FrontEnd\\App_Data\\"; credFile = "bryanston.json"; } else { filePath = "D:\\websites\\lyonsplace\\live\\App_Data\\"; credFile = "lyonsplace.json"; } csvFile = DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; try { // These are the scopes of permissions you need. It is best to request only what you need and not all of them string[] scopes = new string[] { AnalyticsReportingService.Scope.Analytics }; // View your Google Analytics data GoogleCredential credential; using (var stream = new FileStream(filePath + credFile, FileMode.Open, FileAccess.Read)) { credential = GoogleCredential.FromStream(stream) .CreateScoped(scopes); } // Create the Analytics service. AnalyticsReportingService svc = new AnalyticsReportingService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Almacantar", }); var dateRange = new DateRange { StartDate = fromDate, EndDate = toDate }; var metric = new Metric { Expression = "ga:pageviews", Alias = "Sessions" }; List <Dimension> dimensions = new List <Dimension>(); dimensions.Add(new Dimension { Name = "ga:source" }); dimensions.Add(new Dimension { Name = "ga:medium" }); dimensions.Add(new Dimension { Name = "ga:adContent" }); dimensions.Add(new Dimension { Name = "ga:userAgeBracket" }); dimensions.Add(new Dimension { Name = "ga:userGender" }); dimensions.Add(new Dimension { Name = "ga:country" }); dimensions.Add(new Dimension { Name = "ga:language" }); dimensions.Add(new Dimension { Name = "ga:userType" }); var reportRequest = new ReportRequest { Dimensions = dimensions, Metrics = new List <Metric> { metric }, ViewId = "150454507" //lyons place = 183611330, almacantar = "150454507" }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); StringBuilder sb = new StringBuilder(); // csv header sb.Append("source,medium,adContent,age,gender,country,language,userType,pageViews" + Environment.NewLine); foreach (var x in response.Reports.First().Data.Rows) { sb.Append(string.Join(",", x.Dimensions) + "," + string.Join(", ", x.Metrics.First().Values) + "<br/>"); } Response.Write(sb.ToString()); #region write to file /* * StreamWriter sw = File.CreateText(filePath + csvFile); * sw.WriteLine(sb.ToString()); * sw.Close(); * * Response.ContentType = "text/csv"; * Response.AppendHeader("Content-Disposition", "attachment; filename=" + csvFile); * Response.TransmitFile(filePath + csvFile); * Response.End(); */ #endregion } catch (Exception ex) { } } }
static async Task Main(string[] args) { // Instantiate the output delegates. HandelGetReportsResponse handlerConsole = WriteResponseToConsole; HandelGetReportsResponse handlerFile = WriteResponseToFile; // Setup authentication. var scope = new string[] { Google.Apis.AnalyticsReporting.v4.AnalyticsReportingService.Scope.AnalyticsReadonly }; var credential = Oauth2Example.GetUserCredential(_credFileName, "user", scope); var serviceV4 = Oauth2Example.GetAnalyticsReportingService(credential); var serviceV3 = Oauth2Example.GetAnalyticsService(credential); // get views. var summeries = await serviceV3.Management.AccountSummaries.List().ExecuteAsync(); foreach (var accountSummary in summeries.Items) { Console.WriteLine($"{accountSummary.Name}"); foreach (var accountSummaryWebProperty in accountSummary.WebProperties) { Console.WriteLine($" {accountSummaryWebProperty.Name}"); foreach (var profileSummary in accountSummaryWebProperty.Profiles) { Console.WriteLine($" {profileSummary.Name}: {profileSummary.Id }"); } } } string requestedView = string.Empty; do { Console.WriteLine($"Please select profile id"); requestedView = Console.ReadLine(); } while (!long.TryParse(requestedView, out _viewNumber)); Console.WriteLine($"Requesting data for: {_viewNumber}"); // Create the DateRange object. var dateRange = new DateRange() { StartDate = "2010-01-01", EndDate = "2019-01-01" }; // Create the Metrics object. var dimensions = new List <Dimension>() { new Dimension { Name = "ga:browser" }, new Dimension { Name = "ga:date" }, new Dimension { Name = "ga:userType" } }; //Create the Dimensions object. var metrics = new List <Metric>() { new Metric { Expression = "ga:sessions", Alias = "Sessions" }, new Metric { Expression = "ga:users", Alias = "Users" }, new Metric { Expression = "ga:newUsers", Alias = "New Users" } }; // Create the ReportRequest object. var reportRequest = new ReportRequest { ViewId = _viewNumber.ToString(), DateRanges = new List <DateRange>() { dateRange }, Dimensions = dimensions, Metrics = metrics, PageSize = _pageSize }; var requests = new List <ReportRequest> { reportRequest }; // Create the GetReportsRequest object. var getReport = new GetReportsRequest() { ReportRequests = requests }; do { Console.WriteLine($"Requesting data for Pagetoken: {getReport.ReportRequests.FirstOrDefault().PageToken}"); // Call the batchGet method. var response = await serviceV4.Reports.BatchGet(getReport).ExecuteAsync(); getReport.ReportRequests.FirstOrDefault().PageToken = response.Reports.FirstOrDefault().NextPageToken; // Call the delegate. handlerConsole(response, null); handlerFile(response, new string[] { @".\GAOutPut" }); } while (getReport.ReportRequests.FirstOrDefault().PageToken != null); Console.ReadLine(); }
public IList <Report> GetReportMyNormal1() { var credential = GetCredential(); string today = DateTime.Now.ToString("yyyy-MM-dd"); string yesterday = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"); var service = new AnalyticsReportingService(new AnalyticsReportingService.Initializer() { HttpClientInitializer = credential, ApplicationName = "NoobowNotifier", }); ; var request = new GetReportsRequest { ReportRequests = new[] { new ReportRequest { ViewId = this.viewId, Metrics = new[] { new Metric { Expression = "ga:users" } }, Dimensions = new[] { new Dimension { Name = "ga:date" } }, DateRanges = new[] { new DateRange { StartDate = yesterday, EndDate = today } }, }, new ReportRequest { ViewId = this.viewId, Metrics = new[] { new Metric { Expression = "ga:sessions" } }, Dimensions = new[] { new Dimension { Name = "ga:date" } }, DateRanges = new[] { new DateRange { StartDate = yesterday, EndDate = today } }, }, new ReportRequest { ViewId = this.viewId, Metrics = new[] { new Metric { Expression = "ga:pageviews" } }, Dimensions = new[] { new Dimension { Name = "ga:date" } }, DateRanges = new[] { new DateRange { StartDate = yesterday, EndDate = today } }, } } }; var batchRequest = service.Reports.BatchGet(request); return(batchRequest.Execute().Reports); }
static void Main(string[] args) { UserCredential userCredential; userCredential = GetCredential(); // Create AnalyticsReportingService API service. var service = new AnalyticsReportingService(new BaseClientService.Initializer() { HttpClientInitializer = userCredential, ApplicationName = config.APPLICATION_NAME, }); // Create the DataRange Object DateRange dataRange = new DateRange() { StartDate = "2018-01-01", EndDate = "2018-03-07" }; //Create the Metrics Object "ga:pageviews,ga:entrances" Metric sessions = new Metric { Expression = "ga:sessions", Alias = "Session" }; //Crate the Dimensions Object. "ga:date,ga:pagePath,ga:landingPagePath,ga:source" Dimension browser = new Dimension { Name = "ga:browser" }; //Create the ReportRequest Object ReportRequest reportRequest = new ReportRequest { ViewId = config.VIEW_ID, DateRanges = new List <DateRange>() { dataRange }, Dimensions = new List <Dimension>() { browser }, Metrics = new List <Metric>() { sessions } }; List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(reportRequest); //Create the GetReportsRequest object GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; //Call the batchGet Method GetReportsResponse response = service.Reports.BatchGet(getReport).Execute(); printResults(response.Reports); //writeResultsToFile(); }
public async Task <IActionResult> GoogleAnalyticsReport([FromServices] IGoogleAuthProvider auth, [FromServices] ClientInfo clientInfo, long ViewId) { var cred = await auth.GetCredentialAsync(); var service = new AnalyticsReportingService(new BaseClientService.Initializer { HttpClientInitializer = cred }); var dateRange = new DateRange() { StartDate = "2018-06-01", EndDate = "2019-01-01" }; // Create the Metrics object. var dimensions = new List <Dimension>() { new Dimension { Name = "ga:browser" }, new Dimension { Name = "ga:date" }, new Dimension { Name = "ga:userType" } }; //Create the Dimensions object. var metrics = new List <Metric>() { new Metric { Expression = "ga:sessions", Alias = "Sessions" }, new Metric { Expression = "ga:users", Alias = "Users" }, new Metric { Expression = "ga:newUsers", Alias = "New Users" } }; // Create the ReportRequest object. var reportRequest = new ReportRequest { ViewId = ViewId.ToString(), DateRanges = new List <DateRange>() { dateRange }, Dimensions = dimensions, Metrics = metrics, PageSize = 10000 }; var requests = new List <ReportRequest> { reportRequest }; // Create the GetReportsRequest object. var getReport = new GetReportsRequest() { ReportRequests = requests }; var rows = new List <ReportRow>(); try { do { Console.WriteLine($"Requesting data for Pagetoken: {getReport.ReportRequests.FirstOrDefault().PageToken}"); // Call the batchGet method. var response = service.Reports.BatchGet(getReport).Execute(); rows.AddRange(response.Reports.FirstOrDefault().Data.Rows); getReport.ReportRequests.FirstOrDefault().PageToken = response.Reports.FirstOrDefault().NextPageToken; } while (getReport.ReportRequests.FirstOrDefault().PageToken != null); return(View(new ReportResponseModel { Rows = rows })); } catch (Exception) { return(RedirectToAction("Logout")); } }
public GoogleAnalyticsResult GetDataByLocalization(DateTime startDate, DateTime endDate) { if (_analyticsReportingService == null) { return(ReturnEmpty()); } IList <DateRange> dateRanges = new List <DateRange>(); dateRanges.Add(new DateRange() { StartDate = startDate.ToString("yyyy-MM-dd"), EndDate = endDate.ToString("yyyy-MM-dd") }); //Metric IList <Metric> metrics = new List <Metric>(); metrics.Add(new Metric() { Expression = "ga:users", Alias = "Users" }); metrics.Add(new Metric() { Expression = "ga:newUsers", Alias = "Unique users" }); metrics.Add(new Metric() { Expression = "ga:pageviews", Alias = "Views" }); //Dimension IList <Dimension> dimensions = new List <Dimension>(); dimensions.Add(new Dimension() { Name = "ga:country" }); dimensions.Add(new Dimension() { Name = "ga:city" }); //OrderBy IList <OrderBy> orderBys = new List <OrderBy>(); orderBys.Add(new OrderBy() { FieldName = "ga:pageviews", SortOrder = "DESCENDING", OrderType = "VALUE" }); //ReportRequest - final assembling ReportRequest request = new ReportRequest() { ViewId = _googleAnalyticsSettings.gaviewID, DateRanges = dateRanges, Metrics = metrics, Dimensions = dimensions, OrderBys = orderBys, }; List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(request); GetReportsRequest reportsRequest = new GetReportsRequest(); reportsRequest.ReportRequests = requests; var response = _analyticsReportingService.Reports.BatchGet(reportsRequest).Execute(); return(ParseResponse(response, startDate, endDate)); }
public static List <GoogleAnalyticsSearchResult> GetData(GoogleAnalyticsSearchParams param) { var credential = GetCredential(param.IsStageSite); using (var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Google Analytics API Console", })) { var dateRange = new DateRange { StartDate = param.FromDate.ToString("yyyy-MM-dd"), EndDate = param.ToDate.ToString("yyyy-MM-dd") }; var sessions = new Metric { Expression = "ga:sessions", Alias = "Sessions" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = param.GoogleAnalyticsDimensions, Metrics = new List <Metric> { sessions }, ViewId = param.ViewId }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); var result = new List <GoogleAnalyticsSearchResult>(); if (response != null) { var report = response.Reports.FirstOrDefault(); if (report != null && report.Data != null && report.Data.Rows != null && report.Data.Rows.Any()) { foreach (var x in report.Data.Rows) { result.Add(new GoogleAnalyticsSearchResult { Dimensions = x.Dimensions, Values = x.Metrics.First().Values }); } } } return(result); } }
/// <summary> /// Async method to get the page vies of a certain subdirecoty within the webdictaat domain. /// Can be used to extract the page views for example a specific dictaat. /// </summary> /// <param name="subdirectory"></param> /// <returns></returns> public async Task <IList <PageView> > GetPageViews(string subdirectory, DateTime?start = null, DateTime?end = null) { //format filter paramters string dateFormat = "yyyy-MM-dd"; string startString = (start != null ? start : DateTime.Now.AddDays(-30)).Value.ToString(dateFormat); string endString = (end != null ? end : DateTime.Now).Value.ToString(dateFormat); //required to make a valid connection var serviceInitializer = new BaseClientService.Initializer { HttpClientInitializer = _credential, ApplicationName = "Google Analytics API Console" }; using (var svc = new AnalyticsReportingService(serviceInitializer)) { var reportRequest = new ReportRequest { DimensionFilterClauses = new List <DimensionFilterClause> { new DimensionFilterClause() { Filters = new List <DimensionFilter> { new DimensionFilter() { DimensionName = "ga:pagePath", Expressions = new List <String> { String.Format("^/{0}", subdirectory) } } } } }, DateRanges = new List <DateRange> { new DateRange() { StartDate = startString, EndDate = endString } }, Dimensions = new List <Dimension> { new Dimension { Name = "ga:pagePath" } }, Metrics = new List <Metric> { new Metric { Expression = "ga:pageViews" } }, ViewId = "168601841" }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = svc.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); var pageViews = new List <PageView>(); var data_rows = response.Reports.First().Data.Rows; //no data found if (data_rows == null) { return(pageViews); } //format data foreach (var x in data_rows) { var pageUri = x.Dimensions.First().Split("#/").ElementAtOrDefault(1); if (pageUri != null) { pageViews.Add(new PageView() { PageUri = pageUri, Views = string.Join(", ", x.Metrics.First().Values) }); } } ; return(pageViews); } }
public IActionResult Test(TestViewModel viewModel) { var filepath = "analytics-creds.json"; // path to the json file for the Service account GoogleCredential credentials; using (var stream = new FileStream(filepath, FileMode.Open, FileAccess.Read)) { string[] scopes = { AnalyticsReportingService.Scope.AnalyticsReadonly }; var googleCredential = GoogleCredential.FromStream(stream); credentials = googleCredential.CreateScoped(scopes); } var reportingService = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credentials }); var dateRange = new DateRange { StartDate = viewModel.StartDate, EndDate = viewModel.EndDate, }; var sessions = new Metric { Expression = "ga:users", Alias = "Sessions", }; var date = new Dimension { Name = "ga:date" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { date }, Metrics = new List <Metric> { sessions }, ViewId = ViewId // your view id }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = reportingService.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); var responseText = new List <string>(); foreach (var x in response.Reports.First().Data.Rows) { responseText.Add(string.Join(", ", x.Dimensions) + " " + string.Join(", ", x.Metrics.First().Values)); } return(RedirectToAction("Results", new { results = responseText })); }
public IActionResult Index() { var dateRange = new DateRange() { StartDate = "2018-06-01", EndDate = "2019-01-01" }; // Create the Metrics object. var dimensions = new List <Dimension>() { new Dimension { Name = "ga:browser" }, new Dimension { Name = "ga:date" }, new Dimension { Name = "ga:userType" } }; //Create the Dimensions object. var metrics = new List <Metric>() { new Metric { Expression = "ga:sessions", Alias = "Sessions" }, new Metric { Expression = "ga:users", Alias = "Users" }, new Metric { Expression = "ga:newUsers", Alias = "New Users" } }; // Create the ReportRequest object. var reportRequest = new ReportRequest { ViewId = "78110423", DateRanges = new List <DateRange>() { dateRange }, Dimensions = dimensions, Metrics = metrics, PageSize = 10000 }; var requests = new List <ReportRequest> { reportRequest }; // Create the GetReportsRequest object. var getReport = new GetReportsRequest() { ReportRequests = requests }; var rows = new List <ReportRow>(); do { Console.WriteLine($"Requesting data for Pagetoken: {getReport.ReportRequests.FirstOrDefault().PageToken}"); // Call the batchGet method. var response = _service.Reports.BatchGet(getReport).Execute(); rows.AddRange(response.Reports.FirstOrDefault().Data.Rows); getReport.ReportRequests.FirstOrDefault().PageToken = response.Reports.FirstOrDefault().NextPageToken; } while (getReport.ReportRequests.FirstOrDefault().PageToken != null); return(View(new ReportResponseModel { Rows = rows })); }
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); }
/// <summary> /// Fetches all required reports from Google Analytics /// </summary> /// <param name="reportRequests"></param> /// <returns></returns> public static GetReportsResponse GetReport(GetReportsRequest getReportsRequest) { using var analyticsService = GetAnalyticsReportingServiceInstance(ConfigurationManager.AppSettings["KeyFileName"]); return(analyticsService.Reports.BatchGet(getReportsRequest).Execute()); }
public IQueryable <ModelGAResult> GenerateData(string type, string START_DATE, string END_DATE) { string filepath = HttpContext.Current.Server.MapPath("~/App_Data/secret_key.json"); #region Google Credentials GoogleCredential credential; using (var stream = new FileStream(filepath, FileMode.Open, FileAccess.Read)) { string[] scopes = { AnalyticsReportingService.Scope.AnalyticsReadonly }; var googleCredential = GoogleCredential.FromStream(stream); credential = googleCredential.CreateScoped(scopes); } #endregion SimulationGAResult resultList = new SimulationGAResult(); // LOOP using (var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "Google Analytics Reporting API" })) { #region DateRange Report Analytics var dateRange = new DateRange { StartDate = START_DATE, EndDate = END_DATE }; #endregion #region Metric Collections var SessionMetric = new Metric { Expression = "ga:sessions", Alias = "Sessions", FormattingType = "INTEGER" }; var UserMetric = new Metric { Expression = "ga:users", Alias = "Users", FormattingType = "INTEGER" }; var BounceRateMetric = new Metric { Expression = "ga:bounceRate", Alias = "Bounce Rate", FormattingType = "PERCENT" }; var SessionDurationMetric = new Metric { Expression = "ga:sessionDuration", Alias = "Session Durations", FormattingType = "TIME" }; #endregion #region Dimension Result Dimension DateDimension = new Dimension { Name = "ga:date" }; Dimension BrowserDimension = new Dimension { Name = "ga:browser" }; #endregion #region Metric Use Metric usedMetric = new Metric(); switch (type) { case "user": usedMetric = UserMetric; break; case "session": usedMetric = SessionMetric; break; case "bounce": usedMetric = BounceRateMetric; break; case "duration": usedMetric = SessionDurationMetric; break; } var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { DateDimension }, Metrics = new List <Metric> { usedMetric }, ViewId = "173657940" }; #endregion List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(reportRequest); // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; // Call the batchGet method. GetReportsResponse response = null; response = svc.Reports.BatchGet(getReport).Execute(); foreach (var item in response.Reports.First().Data.Rows) { ModelGAResult mdlres = new ModelGAResult(); List <PointType> points = new List <PointType>(); for (int index = 0; index < item.Dimensions.Count; index++) { string tmpDate = item.Dimensions[index]; string year = tmpDate.Substring(0, 4); string month = tmpDate.Substring(4, 2); string date = tmpDate.Substring(6, 2); mdlres.DIMENSION = year + "-" + month + "-" + date; var MetricValues = string.Join(",", item.Metrics.First().Values); var MetricValuesArray = MetricValues.Split(','); for (var metricIndex = 0; metricIndex < MetricValuesArray.Length; metricIndex++) { mdlres.VALUE = MetricValuesArray[0]; } } resultList.RESULTs.Add(mdlres); } } return(resultList.RESULTs.AsQueryable()); }
public virtual async Task <GoogleAnalyticsResult> GetDataByGeneral(DateTime startDate, DateTime endDate) { if (await _analyticsReportingService() == null) { return(ReturnEmpty()); } // metrics and dimensions below are tailored to suit current needings //in case of needing to use different or more metrics or dimensions, see link below //https://developers.google.com/analytics/devguides/reporting/core/dimsmets //it would be nice just to pass metrics and dimensions to this method, but it will surely incerase complexity //and get rid of tidy and neat "fire-n-get" method that requires simple arguments //DateRange IList <DateRange> dateRanges = new List <DateRange>(); dateRanges.Add(new DateRange() { StartDate = startDate.ToString("yyyy-MM-dd"), EndDate = endDate.ToString("yyyy-MM-dd") }); //Metric IList <Metric> metrics = new List <Metric>(); metrics.Add(new Metric() { Expression = "ga:users", Alias = "Users" }); metrics.Add(new Metric() { Expression = "ga:newUsers", Alias = "Unique users" }); metrics.Add(new Metric() { Expression = "ga:pageviews", Alias = "Views" }); //Dimension IList <Dimension> dimensions = new List <Dimension>(); dimensions.Add(new Dimension() { Name = "ga:userType" }); //OrderBy IList <OrderBy> orderBys = new List <OrderBy>(); orderBys.Add(new OrderBy() { FieldName = "ga:pageviews", SortOrder = "DESCENDING", OrderType = "VALUE" }); //final assembling ReportRequest request = new ReportRequest() { ViewId = _googleAnalyticsSettings.gaviewID, DateRanges = dateRanges, Metrics = metrics, Dimensions = dimensions, OrderBys = orderBys }; List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(request); GetReportsRequest reportsRequest = new GetReportsRequest(); reportsRequest.ReportRequests = requests; var response = await(await _analyticsReportingService()).Reports.BatchGet(reportsRequest).ExecuteAsync(); return(ParseResponse(response, startDate, endDate)); }
public IList <PageViewsViewModel> GetPageViews(string viewId, DateTime start, DateTime end) { var dateRange = new DateRange { StartDate = start.ToString("yyyy-MM-dd"), EndDate = end.ToString("yyyy-MM-dd") }; var sessions = new Metric { Expression = "ga:pageviews" }; var date = new Dimension { Name = "ga:date" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { date }, Metrics = new List <Metric> { sessions }, ViewId = viewId }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = _reportingService.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); var pageViews = new List <PageViewsViewModel>(); if (response.Reports.First().Data.Rows != null) { foreach (var x in response.Reports.First().Data.Rows) { if (x.Dimensions.Count > 0 && x.Metrics.Count > 0) { pageViews.Add(new PageViewsViewModel { Date = DateTime.ParseExact(x.Dimensions.First(), "yyyyMMdd", null), Count = int.Parse(x.Metrics.First().Values.First()) }); } } } else { pageViews.Add(new PageViewsViewModel { Date = DateTime.Now.Date, Count = 0 }); } return(pageViews); }
static void Main(string[] args) { // Instantiate the output delegates. HandelGetReportsResponse handlerConsole = WriteResponseToConsole; HandelGetReportsResponse handlerFile = WriteResponseToFile; // Setup authentication. var scope = new string[] { Google.Apis.AnalyticsReporting.v4.AnalyticsReportingService.Scope.AnalyticsReadonly }; var creds = JsonConvert.DeserializeObject <ServiceAccountCreds>(_file); var service = ServiceAccount.AuthenticateServiceAccount(creds.client_email, _credFileName, scope); // Create the DateRange object. var dateRange = new DateRange() { StartDate = "2010-01-01", EndDate = "2019-01-01" }; // Create the Metrics object. var dimensions = new List <Dimension>() { new Dimension { Name = "ga:browser" }, new Dimension { Name = "ga:date" }, new Dimension { Name = "ga:userType" } }; //Create the Dimensions object. var metrics = new List <Metric>() { new Metric { Expression = "ga:sessions", Alias = "Sessions" }, new Metric { Expression = "ga:users", Alias = "Users" }, new Metric { Expression = "ga:newUsers", Alias = "New Users" } }; // Create the ReportRequest object. var reportRequest = new ReportRequest { ViewId = _viewNumber.ToString(), DateRanges = new List <DateRange>() { dateRange }, Dimensions = dimensions, Metrics = metrics, PageSize = _pageSize }; var requests = new List <ReportRequest> { reportRequest }; // Create the GetReportsRequest object. var getReport = new GetReportsRequest() { ReportRequests = requests }; do { Console.WriteLine($"Requesting data for Pagetoken: {getReport.ReportRequests.FirstOrDefault().PageToken}"); // Call the batchGet method. var response = service.Reports.BatchGet(getReport).Execute(); getReport.ReportRequests.FirstOrDefault().PageToken = response.Reports.FirstOrDefault().NextPageToken; // Call the delegate. handlerConsole(response, null); handlerFile(response, new string[] { @".\GAOutPut" }); } while (getReport.ReportRequests.FirstOrDefault().PageToken != null); Console.ReadLine(); }
public VisitedPagesReport Build(DateTime startDate, DateTime endDate) { // Create the DateRange object. DateRange dateRange = new DateRange() { StartDate = ReportDate.GetDateAsString(startDate), EndDate = ReportDate.GetDateAsString(endDate) }; // Create the Metrics object. //https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/ Metric pageViewsMetric = new Metric { Expression = "ga:pageviews", Alias = "Page views" }; Metric uniquePageViewsMetric = new Metric { Expression = "ga:uniquePageviews", Alias = "Unique page views" }; Metric entrancesMetric = new Metric { Expression = "ga:entrances", Alias = "Entrances" }; //Create the Dimensions object. Dimension dimensionPage = new Dimension { Name = "ga:pagePath" }; OrderBy order = new OrderBy { FieldName = "ga:pageviews", SortOrder = "DESCENDING" }; string nextPageToken = null; var reportRows = new List <VisitedPagesReportRow>(); do { // Create the ReportRequest object. ReportRequest reportRequest = new ReportRequest { ViewId = _GAViewID, DateRanges = new List <DateRange>() { dateRange }, Dimensions = new List <Dimension>() { dimensionPage }, Metrics = new List <Metric>() { pageViewsMetric, uniquePageViewsMetric, entrancesMetric }, OrderBys = new List <OrderBy> { order }, PageToken = nextPageToken }; List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(reportRequest); // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; // Call the batchGet method. GetReportsResponse response = _Service.Reports.BatchGet(getReport).Execute(); var report = response.Reports[0]; var rows = report.Data.Rows; foreach (var row in rows) { string url = row.Dimensions[0]; string valPageViews = row.Metrics[0].Values[0]; string valUniqPageViews = row.Metrics[0].Values[1]; string valEntrances = row.Metrics[0].Values[2]; int pageViews = int.Parse(valPageViews); int uniqPageViews = int.Parse(valUniqPageViews); int entrances = int.Parse(valEntrances); var reportRow = new VisitedPagesReportRow(url, pageViews, uniqPageViews, entrances); reportRows.Add(reportRow); } //foreach nextPageToken = report.NextPageToken; if (nextPageToken == null) { break; } } while (true); var result = new VisitedPagesReport(reportRows.ToArray()); return(result); }
static void Main(string[] args) { AnalyticsReportingService reportingService; GoogleCredential credentials; using (var stream = new FileStream("your json file", FileMode.Open, FileAccess.Read)) { string[] scopes = { AnalyticsReportingService.Scope.AnalyticsReadonly }; var googleCredential = GoogleCredential.FromStream(stream); credentials = googleCredential.CreateScoped(scopes); } reportingService = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = credentials }); var dateRange = new DateRange { StartDate = DateTime.Now.ToString("yyyy-MM-dd"), EndDate = DateTime.Now.ToString("yyyy-MM-dd") }; var sessions = new Metric { Expression = "ga:pageviews", Alias = "Sessions" }; var date = new Dimension { Name = "ga:date" }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = new List <Dimension> { date }, Metrics = new List <Metric> { sessions }, ViewId = "xxxxxxxx" // your view id }; var getReportsRequest = new GetReportsRequest { ReportRequests = new List <ReportRequest> { reportRequest } }; var batchRequest = reportingService.Reports.BatchGet(getReportsRequest); var response = batchRequest.Execute(); var result = response.Reports.First().Data.Rows.Sum(r => int.Parse(r.Metrics.First().Values.First())); }
public PublisherRevenueReport Build(DateTime startDate, DateTime endDate) { // Create the DateRange object. DateRange dateRange = new DateRange() { StartDate = ReportDate.GetDateAsString(startDate), EndDate = ReportDate.GetDateAsString(endDate) }; // Create the Metrics object. //https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/ Metric publisherImpressionsMetric = new Metric { Expression = "ga:totalPublisherImpressions", Alias = "Publisher Impressions" }; Metric publisherClicksMetric = new Metric { Expression = "ga:totalPublisherClicks", Alias = "Publisher Clicks" }; Metric publisherRevenueMetric = new Metric { Expression = "ga:totalPublisherRevenue", Alias = "Publisher Revenue" }; //Create the Dimensions object. Dimension dimensionPage = new Dimension { Name = "ga:pagePath" }; OrderBy order = new OrderBy { FieldName = "ga:totalPublisherRevenue", //ga:totalPublisherImpressions SortOrder = "DESCENDING" }; //https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet?hl=ru#SortOrder string nextPageToken = null; double revenueTotal = 0; var reportRows = new List <RevenueReportRow>(); do { // Create the ReportRequest object. ReportRequest reportRequest = new ReportRequest { ViewId = _GAViewID, DateRanges = new List <DateRange>() { dateRange }, Dimensions = new List <Dimension>() { dimensionPage }, Metrics = new List <Metric>() { publisherImpressionsMetric, publisherClicksMetric, publisherRevenueMetric }, OrderBys = new List <OrderBy> { order }, PageToken = nextPageToken }; List <ReportRequest> requests = new List <ReportRequest>(); requests.Add(reportRequest); // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; // Call the batchGet method. GetReportsResponse response = _Service.Reports.BatchGet(getReport).Execute(); var report = response.Reports[0]; int rowCount = 0; if (report.Data.RowCount != null) { rowCount = report.Data.RowCount.Value; } var rows = report.Data.Rows; foreach (var row in rows) { string url = row.Dimensions[0]; string valImpressions = row.Metrics[0].Values[0]; string valClicks = row.Metrics[0].Values[1]; string valRevenue = row.Metrics[0].Values[2]; var rev = double.Parse(valRevenue, CultureInfo.InvariantCulture); int impressions = int.Parse(valImpressions); int clicks = int.Parse(valClicks); RevenueReportRow reportRow = new RevenueReportRow(rev, impressions, clicks, url); reportRows.Add(reportRow); revenueTotal += rev; } //foreach nextPageToken = report.NextPageToken; if (nextPageToken == null) { break; } } while (true); PublisherRevenueReport result = new PublisherRevenueReport(revenueTotal, reportRows.ToArray()); return(result); }