使用C#库对Google Analytics API中的维度或度量应用过滤器

使用C#库对Google Analytics API中的维度或度量应用过滤器,c#,asp.net,filter,google-analytics,google-analytics-api,C#,Asp.net,Filter,Google Analytics,Google Analytics Api,我已经能够在google analytics上验证我的应用程序,并在独特的页面视图周围显示一些数据。现在我想根据流量来源获取页面视图,但我不太确定如何获取维度上的过滤器。我已经用c语言编写了我的代码,无法理解其他语言的例子。我使用了api查询资源管理器,得到了正确的表达式和结果。我的困难是如何将其翻译成我的代码。我的代码在下面 var filepath = Server.MapPath("~/jsonfile"); // path to the json file for the Se

我已经能够在google analytics上验证我的应用程序,并在独特的页面视图周围显示一些数据。现在我想根据流量来源获取页面视图,但我不太确定如何获取维度上的过滤器。我已经用c语言编写了我的代码,无法理解其他语言的例子。我使用了api查询资源管理器,得到了正确的表达式和结果。我的困难是如何将其翻译成我的代码。我的代码在下面

    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));
        }
var filepath=Server.MapPath(“~/jsonfile”);//服务帐户的json文件的路径
谷歌认证证书;
使用(var stream=newfilestream(filepath,FileMode.Open,FileAccess.Read))
{
字符串[]范围={AnalyticsReportingService.Scope.AnalyticsReadonly};
var googleCredential=googleCredential.FromStream(流);
credentials=googleCredential.CreateScoped(范围);
}
var reportingService=新分析报告服务(
新建BaseClientService.Initializer
{
HttpClientInitializer=凭证
});
var dateRange=new dateRange
{
StartDate=“2016-10-28”,
EndDate=“2016-12-20”
};
var会话=新度量
{
Expression=“ga:uniquePageviews”,
Alias=“会话”
};
var social=新维度{Name=“ga:socialNetwork”};
var reportRequest=新的reportRequest
{
DateRanges=新列表{dateRange},
维度=新列表{social},
度量=新列表{sessions},
ViewId=“myviewid”
};
var getReportsRequest=新的getReportsRequest
{
ReportRequests=新列表{reportRequest}
};
var batchRequest=reportingService.Reports.BatchGet(getReportsRequest);
var response=batchRequest.Execute();
foreach(response.Reports.FirstOrDefault().Data.Rows中的var x)
{
Write(string.Join(“,”,x.Dimensions)+string.Join(“,”,x.Metrics.First().Values));
}

您应该创建一个
维度过滤器clauses
并将其传递给
报告请求
,如下所示:

//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 };
p.S: 此外,如果需要筛选度量而不是维度,则需要按如下所示创建一个
MetricFilterClauses
,然后将其传递给
ReportRequest
中的
MetricFilterClauses

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 }
};
//Create the Metric Filter
var metricFilter = new MetricFilter();
metricFilter.MetricName = "someMetric";
metricFilter.ComparisonValue = "someValue";
var metricFilterClause = new MetricFilterClause();
metricFilterClause.Filters = new List<MetricFilter> { metricFilter };
//创建度量过滤器
var metricFilter=新的metricFilter();
metricFilter.MetricName=“sometric”;
metricFilter.ComparisonValue=“someValue”;
var metricFilterClause=新的metricFilterClause();
metricFilterClause.Filters=新列表{metricFilter};