使用C#库对Google Analytics API中的维度或度量应用过滤器
我已经能够在google analytics上验证我的应用程序,并在独特的页面视图周围显示一些数据。现在我想根据流量来源获取页面视图,但我不太确定如何获取维度上的过滤器。我已经用c语言编写了我的代码,无法理解其他语言的例子。我使用了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
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};