簡體   English   中英

如何調試AnalyticsReporting V4?

[英]How to debug AnalyticsReporting V4?

我正在嘗試調試此代碼,以找出錯誤所在,但無法執行。

我不確定viewId應該只是int還是ga:<viewId> ,我嘗試了兩種方法,但仍獲取空數據。

List<Report>.Data始終返回null。

碼:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using Google.Apis.Analytics.v3;
using Google.Apis.Analytics.v3.Data;
using Google.Apis.Services;
using Google.Apis.AnalyticsReporting.v4;
using Google.Apis.AnalyticsReporting.v4.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Util;
using Google.Apis.Logging;

public class GoogleAnalyticsApi
{
    private const string keyPath = @"<JsonFileAbsolutePath>";
    private string accountEmailAddress = "googleaccount@mail";
    private string keyPassword = "<secret>";
    private string viewId;
    public AnalyticsService Service { get; set; }
    private AnalyticsReportingService gaService;

    public GoogleAnalyticsApi(string viewId)
    {
        try
        {
            var logger = new ConsoleLogger(LogLevel.Error);
            GoogleCredential credentials;
            using (var stream = new FileStream(keyPath, FileMode.Open, FileAccess.Read))
            {

                string[] scopes = {AnalyticsReportingService.Scope.AnalyticsReadonly};
                var googleCredential = GoogleCredential.FromStream(stream);
                credentials = googleCredential.CreateScoped(scopes).ThrowIfNull("");

            }

            this.gaService = new AnalyticsReportingService(
                new BaseClientService.Initializer
                {
                    ApplicationName = "Testing",
                    HttpClientInitializer = credentials
                });
        }
        catch (Exception e)
        {
            throw new Exception("Can't start Google service.");
        }

        this.viewId = viewId;
    }

    public IList<Report> GetReports(DateRange dateRange, List<Metric> metrics, List<Dimension> dimensions, string filters = null, List<OrderBy> orderBys = null)
    {
        var reportRequest = new ReportRequest
        {
            DateRanges = new List<DateRange> { dateRange },
            Dimensions = dimensions,
            Metrics = metrics,
            FiltersExpression = filters,
            ViewId = this.viewId,
            OrderBys = orderBys
        };

        var getReportsRequest = new GetReportsRequest
        {

            ReportRequests = new List<ReportRequest> { reportRequest }
        };
        ReportsResource.BatchGetRequest batchRequest = this.gaService.Reports.BatchGet(getReportsRequest);
        GetReportsResponse resp = batchRequest.Execute();
        return resp.Reports;
    }

    public IList<Profile> GetAvailableProfiles()
    {
        var response = Service.Management.Profiles.List("~all", "~all").Execute();
        return response.Items;
    }
}

我嘗試過濾的類別存在,並且如果我嘗試使用以下確切的指標,維度和過濾器, 訪問: https : //ga-dev-tools.appspot.com/query-explorer/#report-end it all效果很好。

我從這個Controller調用它:



    private void Test(HttpContext ctx)
    {
        var dateRange = new DateRange
        {
            StartDate = "2018-01-01",
            EndDate = "2018-02-01"
        };
        List<Metric> metrics = GenerateMetricsListFromStrings(new ArrayList()
        {
            "ga:pageviews",
            "ga:totalEvents",
            "ga:pageviewsPerSession",
            "ga:users",
            "ga:sessions"
        });
        List<Dimension> dimensions = GenerateDimensionsListFromStrings(new ArrayList()
        {
            "ga:browser",
            "ga:operatingSystem",
            "ga:country",
            "ga:hour",
            "ga:date"
        });
        string filters = "ga:eventCategory==Test";
        IList<Report> data = this.ga.GetReports(dateRange, metrics, dimensions, filters);
        foreach (var item in data.First().Data.Rows)
        {
            ctx.Response.Write(
                String.Join(", ", item.Dimensions) + " " + String.Join(", ", item.Metrics.First().Values)
            );
        }
    }

    /**
     * ...
     */
    private List<Metric> GenerateMetricsListFromStrings(ArrayList metrics)
    {
        List<Metric> metrictsList = new List<Metric>();
        foreach (string metric in metrics)
        {
            metrictsList.Add(new Metric()
            {
                Expression = metric
            });
        }

        return metrictsList;
    }

    /**
     * ...
     */
    private List<Dimension> GenerateDimensionsListFromStrings(ArrayList dimensions)
    {
        List<Dimension> dimensionsList = new List<Dimension>();
        foreach (string dim in dimensions)
        {
            dimensionsList.Add(new Dimension()
            {
                Name =  dim
            });
        }

        return dimensionsList;
    }

謝謝。

真可悲,我誤會了日期...

我試圖從2018年而不是今年獲得數據...


        var dateRange = new DateRange
        {
            StartDate = "2018-01-01",
            EndDate = "2019-02-01"
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM