private void BindAgeAndGender(DateTime startDate, DateTime endDate)
        {
            var param = new GoogleAnalyticsSearchParams
            {
                IsStageSite = true,
                FromDate    = startDate,
                ToDate      = endDate,
                GoogleAnalyticsDimensions = new List <Dimension>
                {
                    GoogleAnalyticsDimensions.AgeDimension,
                    GoogleAnalyticsDimensions.GenderDimension
                },
                ViewId            = GoogleAnalyticsViewId.DayAxeAllWebsiteDataStage,
                LoginEmailAddress = "*****@*****.**"
            };

            var ageAndGenderResult = GoogleAnalyticsHelper.GetData(param);

            var female = ageAndGenderResult.Where(x => string.Join(",", x.Dimensions).Contains("female")).ToList();
            var male   = ageAndGenderResult.Except(female).ToList();

            DemographicsMale   = string.Format("[{0}]", string.Join(",", male.Select(x => x.Values.First())));
            DemographicsFemale = string.Format("[{0}]", string.Join(",", female.Select(x => string.Format("-{0}", x.Values.First()))));

            AgeAndGenderCategories = string.Format("[{0}]", string.Join(",", male.Select(x => string.Format("'{0}'", x.Dimensions[0]))));
        }
Esempio n. 2
0
        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);
            }
        }