C# Google Analytics API BatchRequest-筛选/回调
我正在尝试提交一个BatchRequest,但不确定如何应用筛选器或如何处理回调C# Google Analytics API BatchRequest-筛选/回调,c#,asp.net,google-analytics,google-api,google-analytics-api,C#,Asp.net,Google Analytics,Google Api,Google Analytics Api,我正在尝试提交一个BatchRequest,但不确定如何应用筛选器或如何处理回调 class Program { static void Main(string[] args) { try { new Program().Run().Wait(); } catch (Exception exc) { Console.WriteLine(exc.Messa
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();
}
}
更新 我相信我已经用以下代码解决了过滤器问题:
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
});
var req=service.Data.Ga.Get(“Ga:XXXXXX”、“30daysAgo”、“昨天”、“Ga:sessions”);
req.Filters=“ga:pagePath==/page1.html”;
请求队列(req,
(内容、错误、i、消息)=>
{
//回调代码
});
我仍然不确定如何处理回拨。“content”参数以类的形式返回:Google.api.Analytics.v3.DataResource.GaResource.GetRequest,因此我对C#不熟悉,但我确实查看了get方法的。而
GetRequest
对象有一个filters属性,您可以设置它
var request = service.Data.Ga.Get("ga:XXXXXX",
"30daysAgo", "yesterday", "ga:sessions");
request.dimensions("ga:pagePath");
request.filters("ga:pagePath==/page1.html");
我鼓励您也查看完整的参数集
我可以想象回调方法中的content对象将与
我希望这能有所帮助。我终于能够让它工作了 以下是一个向Analytics 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();
}
}
类程序
{
静态void Main(字符串[]参数)
{
尝试
{
新程序().Run().Wait();
}
捕获(异常exc)
{
控制台写入线(exc.Message);
}
Console.Read();
}
专用异步任务运行()
{
var privatekey=“私钥”;
var accountEmailAddress=“电子邮件地址”;
var credentials=新的ServiceAccountCredential(
新ServiceAccountCredential.初始值设定项(accountEmailAddress)
{
Scopes=new[]{AnalyticsService.Scope.AnalyticsReadonly}
}.来自privatekey(privatekey));
var服务=新的AnalyticsService(新的BaseClientService.Initializer()
{
HttpClientInitializer=凭证,
ApplicationName=“测试”
});
var请求=新批处理请求(服务);
BatchRequest.OnResponse回调=(内容、错误、i、消息)=>
{
if(错误!=null)
{
WriteLine(“错误:{0}”,Error.Message);
}
其他的
{
如果(content.Rows!=null)
{
foreach(content.Rows中的变量项)
{
foreach(项目中的var项目1)
{
控制台写入线(第1项);
}
}
}
其他的
{
控制台。写入线(“未找到”);
}
}
};
int计数器=0;
while(计数器<5)
{
var req=service.Data.Ga.Get(“Ga:XXXXX”、“30daysAgo”、“昨天”、“Ga:sessions”);
req.Filters=“ga:pagePath==/page”+计数器+”.html”;
队列(req,回调);
计数器++;
}
等待请求。ExecuteAsync();
}
}
这是常规get请求的正确格式,但不适用于BatchRequest。
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();
}
}