我有一个问题,我无法调用分析来处理本文档中的示例(快速入门)。我更改了我读过的一些内容,因为它不允许我按原样使用示例,例如
'using Google.Analytics.Data.V1Beta;'
或部分'BetaAnalyticsDataClient client = BetaAnalyticsDataClient.Create();'
我认为它不再有效。有人能用吗?这是我的代码:
using Google.Apis.AnalyticsData.v1beta;
//////
// Google Analytics 4 property ID.
string propertyId = "407521144";
// Credential Path
string credentialsPath = HostingEnvironment.MapPath("~") + @"Scripts\mktwebsuitedigital-afe56dbd25f6.json";
// Authenticate and create the service.
GoogleCredential credential = GoogleCredential.FromFile(credentialsPath);
AnalyticsDataService service = new AnalyticsDataService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Google Analytics 4",
});
RunReportRequest request = new RunReportRequest
{
Property = "properties/" + propertyId,
Dimensions = { new Dimension { Name = "city" }, },
Metrics = { new Metric { Name = "activeUsers" }, },
DateRanges = { new DateRange { StartDate = "2023-03-31", EndDate = "today" }, },
};
RunReportResponse response = service.Properties.RunReport(request, propertyId).Execute();
// Make the request
Console.WriteLine("Report result:");
foreach (Row row in response.Rows)
{
Console.WriteLine("{0}, {1}", row.DimensionValues[0].Value, row.MetricValues[0].Value);
}
我已经尝试过这段代码和我研究过的其他变体,比如我发布的代码,但我找不到办法。我知道带有分析 ID 和 JSON 的部分是正确的。它总是失败并出现
System.NullReferenceException:“RunReportRequest request = new RunReportRequest”行上出现“空对象”错误。
这是我的示例,您应该使用
BetaAnalyticsDataClientBuilder
using Google.Analytics.Data.V1Beta;
using GoogleAnalyticsGa4Helpers;
Console.WriteLine("Hello, Google Analytics data api, Service account!");
// Path to the service account credentials file.
const string credentialsJsonPath = @"C:\Development\FreeLance\GoogleSamples\Credentials\ServiceAccountCred.json";
// Property on Google analytics which the service account has been granted access to.
const string propertyId = "250796939";
var client = new BetaAnalyticsDataClientBuilder
{
CredentialsPath = credentialsJsonPath
}.Build();
var metricFilter = new FilterExpression()
{
Filter = new Filter()
{ FieldName = "totalUsers",
NumericFilter = new Filter.Types.NumericFilter()
{
Operation = Filter.Types.NumericFilter.Types.Operation.GreaterThan,
Value = new NumericValue() { DoubleValue = 40 }
}
}
};
var dimensionFilter = new FilterExpression()
{
Filter = new Filter()
{
FieldName = "country",
StringFilter = new Filter.Types.StringFilter()
{
CaseSensitive = false,
MatchType = Filter.Types.StringFilter.Types.MatchType.BeginsWith,
Value = "u"
}
}
};
var request = new RunReportRequest
{
Property = "properties/" + propertyId,
Dimensions = { new Dimension { Name = "date" }, new Dimension() { Name = "country"} },
Metrics = { new Metric { Name = "totalUsers" }, new Metric { Name = "newUsers" } },
DateRanges = { new DateRange { StartDate = "2021-04-01", EndDate = "today" }, },
MetricFilter = metricFilter,
DimensionFilter = dimensionFilter,
OrderBys = { new OrderBy() { Metric = new OrderBy.Types.MetricOrderBy() { MetricName = "newUsers"}}}
};
var response = await client.RunReportAsync(request);
// Helper Method
response.PrintToConsole();
Console.ReadLine();