2016-12-28 9 views
2

Googleアナリティクスで自分のアプリを認証し、ユニークなページビューの周りに一部のデータを表示することができました。今、トラフィックソースに基づいてページビューを取得したいのですが、ディメンションでフィルタを取得する方法がわかりません。私は自分のコードをC#で書いていますが、私が見た他の言語の例を頭に浮かべることはできません。私はAPIのクエリエクスプローラを使用し、正しい表現と結果を得ました。私の難しさは、それを私のコードにどのように翻訳するかです。C#ライブラリを使用してGoogleアナリティクスAPIのディメンションまたは指標にフィルタを適用する

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: さらに

//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 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にそれを渡していますDimensionではなくMetricをフィルタリングする必要がある場合は、 MetricFilterClausesとしてごReportRequestMetricFilterClausesに渡し、その後、次のと:

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