2016-12-28 19 views
2

我已經能夠在谷歌分析上驗證我的應用,並在獨特的頁面視圖中顯示一些數據。現在我想獲取基於流量來源的頁面瀏覽量,但我不太確定如何獲得維度上的過濾器。我已經用c#編寫了我的代碼,並且無法繞過我見過的其他語言的示例。我已經使用API​​查詢瀏覽器,並得到正確的表達式和結果。我的困難是如何將它翻譯成我的代碼。我的代碼如下使用C#庫在Google AnalyticsAPI中對維度或指標應用過濾器

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 }; 
相關問題