Google Analytics API BatchRequest - Filtering/Callback



我正在尝试提交批处理请求,但不确定如何应用过滤器或如何处理回调。

class Program
{
    static void Main(string[] args)
    {
        try
        {
            new Program().Run().Wait();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
        }
        Console.Read();
    }
    private async Task Run()
    {
        var privatekey = "private key";
        var accountEmailAddress = "email address";
        var credentials = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(accountEmailAddress) {
                Scopes = new[] { AnalyticsService.Scope.AnalyticsReadonly }
            }.FromPrivateKey(privatekey));
        var service = new AnalyticsService(new BaseClientService.Initializer() {
            HttpClientInitializer = credentials,
            ApplicationName = "Test"
        });
        var request = new BatchRequest(service);
        request.Queue<DataResource.GaResource.GetRequest>(service.Data.Ga.Get("ga:XXXXXX", "30daysAgo", "yesterday", "ga:sessions"),
            (content, error, i, message) =>
            {
                //callback code
            });
        await request.ExecuteAsync();
    }
}

两个问题:

  1. 如何将以下筛选器应用于请求?

    ga:pagePath==/page1.html
    
  2. 如何处理回调并查看返回的数据?


更新

我相信我已经使用以下代码解决了过滤器问题:

var req = service.Data.Ga.Get("ga:XXXXXX", "30daysAgo", "yesterday", "ga:sessions");
req.Filters = "ga:pagePath==/page1.html";
request.Queue<DataResource.GaResource.GetRequest>(req,
    (content, error, i, message) =>
    {
        //callback code
    });

我仍然不确定如何处理回调。 "content"参数作为类返回:Google.Apis.Analytics.v3.DataResource.GaResource.GetRequest

我终于能够让它工作了。

供任何人将来参考,下面是向分析 API 提交 BatchRequest 的工作 .Net 示例。

class Program
{
    static void Main(string[] args)
    {
        try
        {
            new Program().Run().Wait();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
        }
        Console.Read();
    }
    private async Task Run()
    {
        var privatekey = "private key";
        var accountEmailAddress = "email address";
        var credentials = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(accountEmailAddress)
            {
                Scopes = new[] { AnalyticsService.Scope.AnalyticsReadonly }
            }.FromPrivateKey(privatekey));
        var service = new AnalyticsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credentials,
            ApplicationName = "Test"
        });
        var request = new BatchRequest(service);
        BatchRequest.OnResponse<GaData> callback = (content, error, i, message) =>
        {
            if (error != null)
            {
                Console.WriteLine("Error: {0}", error.Message);
            }
            else
            {
                if (content.Rows != null)
                {
                    foreach (var item in content.Rows)
                    {
                        foreach (var item1 in item)
                        {
                            Console.WriteLine(item1);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Not Found");
                }
            }
        };
        int counter = 0;
        while (counter < 5)
        {
            var req = service.Data.Ga.Get("ga:XXXXX", "30daysAgo", "yesterday", "ga:sessions");
            req.Filters = "ga:pagePath==/page" + counter + ".html";
            request.Queue<GaData>(req, callback);
            counter++;
        }
        await request.ExecuteAsync();
    }
}

所以我不熟悉 C#,但我确实查看了 get 方法的源代码。GetRequest对象有一个可以设置的过滤器属性。

var request = service.Data.Ga.Get("ga:XXXXXX",
    "30daysAgo", "yesterday", "ga:sessions");
request.dimensions("ga:pagePath");
request.filters("ga:pagePath==/page1.html");

我鼓励您也查看核心报告 API 参考,了解完整的参数集。

我想回调方法中的内容对象将与GaData响应对象相对应

我希望这对一些人有所帮助。

相关内容

  • 没有找到相关文章

最新更新