示例#1
0
 public PublisherRevenueReportBuilder(AnalyticsReportingService service, string gaViewID)
 {
     _GAViewID = gaViewID ?? throw new ArgumentNullException(nameof(gaViewID));
     _Service  = service ?? throw new ArgumentNullException(nameof(service));
 }
示例#2
0
 public ReportingApi(AnalyticsReportingService analyticsReportingServiceInstance)
 {
     this.analyticsReportingServiceInstance = analyticsReportingServiceInstance;
 }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }