我在 .NET 中使用 Google Analytics Data API (GA4) 时遇到问题

问题描述 投票:0回答:1

我有一个问题,我无法调用分析来处理本文档中的示例(快速入门)。我更改了我读过的一些内容,因为它不允许我按原样使用示例,例如

'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”行上出现“空对象”错误。

c# asp.net google-analytics-api google-api-dotnet-client
1个回答
0
投票

这是我的示例,您应该使用

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();
© www.soinside.com 2019 - 2024. All rights reserved.