public PublisherRevenueReportBuilder(AnalyticsReportingService service, string gaViewID) { _GAViewID = gaViewID ?? throw new ArgumentNullException(nameof(gaViewID)); _Service = service ?? throw new ArgumentNullException(nameof(service)); }
public ReportingApi(AnalyticsReportingService analyticsReportingServiceInstance) { this.analyticsReportingServiceInstance = analyticsReportingServiceInstance; }
public async Task <IEnumerable <PageResult> > GetTrendingPagesAsync(byte maxCount) { const string applicationName = "Dusted Codes Website"; var blogLaunchDate = new DateTime(2015, 02, 16).ToString("yyyy-MM-dd"); var endDate = DateTime.UtcNow.ToString("yyyy-MM-dd"); var credential = GoogleCredential.FromStream( new FileStream( _privateKeyPath, FileMode.Open, FileAccess.Read)) .CreateScoped(AnalyticsReportingService.Scope.AnalyticsReadonly); using (var service = new AnalyticsReportingService( new BaseClientService.Initializer { ApplicationName = applicationName, HttpClientInitializer = credential })) { var request = service.Reports.BatchGet( new GetReportsRequest { ReportRequests = new List <ReportRequest> { new ReportRequest { ViewId = _viewId, DateRanges = new List <DateRange> { new DateRange { StartDate = blogLaunchDate, EndDate = endDate } }, Metrics = new List <Metric> { new Metric { Expression = "ga:pageviews" } }, Dimensions = new List <Dimension> { new Dimension { Name = "ga:pagePath" } }, OrderBys = new List <OrderBy> { new OrderBy { FieldName = "ga:pageviews", SortOrder = "DESCENDING" } } } } }); var response = await request.ExecuteAsync().ConfigureAwait(false); var trendingPages = new List <PageResult>(); var report = response.Reports[0]; var maxRows = Math.Min(report.Data.Rows.Count, maxCount); for (var i = 0; i < maxRows; i++) { var row = report.Data.Rows[i]; var path = row.Dimensions[0]; var count = row.Metrics[0].Values[0]; trendingPages.Add(new PageResult { Path = path, ViewCount = count }); } return(trendingPages); } }
public IEnumerable <SessionMetrics> GetSessionMetrics(string viewID, DateTime date) { using (var svc = new AnalyticsReportingService( new BaseClientService.Initializer { HttpClientInitializer = _credentialsProvider.GetCredential(), ApplicationName = "ViajaNet Developer Test" })) { var dateRange = new DateRange { StartDate = date.ToString("yyyy-MM-dd"), EndDate = date.ToString("yyyy-MM-dd") }; var sessions = new Metric[] { new Metric { Expression = "ga:sessions", Alias = "Sessions" }, }; var dimension = new Dimension[] { new Dimension { Name = "ga:date" }, new Dimension { Name = "ga:city" } }; var reportRequest = new ReportRequest { DateRanges = new List <DateRange> { dateRange }, Dimensions = dimension, Metrics = sessions.ToList(), ViewId = 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) { foreach (var row in response.Reports.First().Data.Rows) { var dateString = row.Dimensions[0]; var year = int.Parse(dateString.Substring(0, 4)); var month = int.Parse(dateString.Substring(4, 2)); var day = int.Parse(dateString.Substring(6, 2)); var city = row.Dimensions[1]; var sessionCount = int.Parse(row.Metrics.First().Values[0]); yield return(new SessionMetrics(new DateTime(year, month, day), sessionCount, city)); } } } }
/// <summary> /// Gets Google Analytics Reports by sending custom variables /// </summary> /// <param name="startDate">report start date. format "yyyy-MM-dd"</param> /// <param name="endDate">report start date. format "yyyy-MM-dd"</param> /// <param name="metrics">metrics. example: "ga:hits, ga:eventValue etc."</param> /// <param name="dimensions">dimensions. example: "ga:dimension1," for events "ga:eventCategory, ga:eventAction, ga:eventLabel"</param> /// <param name="viewId">view id of your property. example: "ga:113466633"</param> /// <param name="jsonFile">Full Path of file</param> /// <param name="scopes">scopes for authentication</param> /// <param name="applicationName">Your application name</param> /// <param name="pageToken"></param> /// <param name="dimensionFilterClauses"></param> /// <returns></returns> public GetReportsResponse Get(string startDate, string endDate, string[] metrics, string[] dimensions, string viewId, string jsonFile, string[] scopes, string applicationName, string pageToken = null, List <DimensionFilterClause> dimensionFilterClauses = null) { DateRange dateRange = new DateRange() { StartDate = startDate, EndDate = endDate }; List <Metric> listOfMetric = new List <Metric>(); if (metrics.Length > 0) { listOfMetric.AddRange(metrics.Select(exp => new Metric() { Expression = exp })); } List <Dimension> listOfDimension = new List <Dimension>(); if (dimensions.Length > 0) { listOfDimension.AddRange(dimensions.Select(exp => new Dimension() { Name = exp })); } ReportRequest reportRequest = new ReportRequest { ViewId = viewId, DateRanges = new List <DateRange>() { dateRange }, Dimensions = listOfDimension, Metrics = listOfMetric, PageToken = pageToken, DimensionFilterClauses = dimensionFilterClauses }; List <ReportRequest> requests = new List <ReportRequest> { reportRequest }; GoogleCredential credential; using (Stream stream = new FileStream(jsonFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { credential = GoogleCredential.FromStream(stream); } credential = credential.CreateScoped(scopes); GetReportsRequest getReport = new GetReportsRequest() { ReportRequests = requests }; AnalyticsReportingService analyticsreporting = new AnalyticsReportingService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = applicationName, }); GetReportsResponse response = analyticsreporting.Reports.BatchGet(getReport).Execute(); return(response); }