如何在C#中通过Google.Analytics.Data.V1Beta设置MetricAggregations?
解决GA4 C#库中MetricAggregations只读属性的设置问题
你遇到的问题核心是MetricAggregations是只读的RepeatedField集合,不能直接通过赋值新的RepeatedField实例来配置,正确做法是向已初始化的集合中添加聚合类型。
错误写法修正
把你原来直接赋值的代码:
MetricAggregations=new Google.Protobuf.Collections.RepeatedField<MetricAggregation> { MetricAggregation.Total},
替换为集合初始化语法(或者用Add方法):
MetricAggregations = { MetricAggregation.Total },
如果是在对象初始化语句之外设置,也可以这样写:
request.MetricAggregations.Add(MetricAggregation.Total);
完整修正后的代码
var request = new RunReportRequest { Property = "properties/" + myPropertyId, Dimensions = { new Dimension { Name = "pageLocation" } }, DimensionFilter = new FilterExpression { Filter = new Filter { StringFilter = new Filter.Types.StringFilter { CaseSensitive = true, MatchType = Filter.Types.StringFilter.Types.MatchType.PartialRegexp, Value = @"l-\d{6,}" }, FieldName = "pageLocation" } }, Metrics = { new Metric { Name = "screenPageViews" } }, // 修正后的MetricAggregations设置方式 MetricAggregations = { MetricAggregation.Total }, DateRanges = { new DateRange { StartDate = "2022-01-01", EndDate = "2022-07-19" } }, Limit = 1 // 这里可直接用整数类型,无需字符串 }; var response = await _client.RunReportAsync(request);
补充说明
- Google Protobuf生成的RepeatedField属性默认已完成实例初始化,你只需向其中添加元素,无需重新创建新的RepeatedField对象。
- 你看到的错误信息本质是错误赋值导致请求参数格式异常,修正赋值方式后该问题会自动消失。
内容的提问来源于stack exchange,提问作者Rémy
相关产品推荐
相关产品推荐

