2016-12-28 9 views
2

Я смог аутентифицировать свое приложение в аналитике Google и отображать некоторые данные вокруг уникальных просмотров страниц. Теперь я хочу получить просмотры страниц на основе источника трафика, но я не совсем уверен, как получить фильтры по размерам. Я написал свой код в C# и не могу придумать примеры на других языках, которые я видел. Я использовал api Query Explorer и получил правильные выражения и результаты. Моя сложность заключается в том, как перевести это в мой код. Мой код нижеПрименить фильтр по размерности или метрике в API Google Analytics с использованием библиотеки C#

var filepath = Server.MapPath("~/jsonfile"); // 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 = "2016-10-28", 
      EndDate = "2016-12-20" 
     }; 

     var sessions = new Metric 
     { 
      Expression = "ga:uniquePageviews", 
      Alias = "Sessions" 
     }; 


     var social = new Dimension { Name = "ga:socialNetwork" }; 



     var reportRequest = new ReportRequest 
     { 
      DateRanges = new List<DateRange> { dateRange }, 
      Dimensions = new List<Dimension> { social }, 
      Metrics = new List<Metric> { sessions }, 
      ViewId = "myviewid" 
     }; 

     var getReportsRequest = new GetReportsRequest 
     { 
      ReportRequests = new List<ReportRequest> { reportRequest } 
     }; 

     var batchRequest = reportingService.Reports.BatchGet(getReportsRequest); 
     var response = batchRequest.Execute(); 
     foreach (var x in response.Reports.FirstOrDefault().Data.Rows) 
     { 
      Response.Write(string.Join(", ", x.Dimensions) + " " + string.Join(", ", x.Metrics.First().Values)); 
     } 

ответ

1

Вы должны создать DimensionFilterClauses и передать его ReportRequest следующим образом:

//Create the Dimension Filter 
var dimensionFilter = new DimensionFilter(); 
dimensionFilter.DimensionName = "ga:socialNetwork"; 
dimensionFilter.Expressions = new List<string> { "someValue" }; 
var dimensionFilterClause = new DimensionFilterClause(); 
dimensionFilterClause.Filters = new List<DimensionFilter> { dimensionFilter }; 

Затем измените ReportRequest:

var reportRequest = new ReportRequest 
{ 
    DateRanges = new List<DateRange> { dateRange }, 
    Dimensions = new List<Dimension> { social }, 
    Metrics = new List<Metric> { sessions }, 
    ViewId = "myviewid", 
    DimensionFilterClauses = new List<DimensionFilterClause> { dimensionFilterClause } 
}; 

PS: Кроме того , если вам нужно отфильтровать Metric вместо Dimension, вам нужно будет создать MetricFilterClauses следующим образом, а затем передать его в MetricFilterClauses в вашем ReportRequest:

//Create the Metric Filter 
var metricFilter = new MetricFilter(); 
metricFilter.MetricName = "someMetric"; 
metricFilter.ComparisonValue = "someValue"; 
var metricFilterClause = new MetricFilterClause(); 
metricFilterClause.Filters = new List<MetricFilter> { metricFilter }; 

 Смежные вопросы

  • Нет связанных вопросов^_^