问题是我没有得到正确的值,我不知道如何格式化代码以提取正确的值.我不想在特定时间范围内检索所有访客,在本例中为“2012-01-01” – “2014-02-20”.查看Google Analytics信息中心时,实际访问者数量会增加10倍.在调试代码时,我得到了15000.我在控制台中显示d.TotalResults可能是错误的,变量“d”包含许多不同的属性.
这是我正在运行的代码:
public static void Main(string[] args) { var serviceAccountEmail = "MY@developer.gserviceaccount.com"; var certificate = new X509Certificate2(@"C:\Users\User\Desktop\key.p12","notasecret",X509KeyStorageFlags.Exportable); var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail) { Scopes = new[] { AnalyticsService.Scope.Analytics } }.FromCertificate(certificate)); // Create the service. //Twistandtango var gas = new AnalyticsService(new BaseClientService.Initializer() { HttpClientInitializer = credential,ApplicationName = "TestGoogleAnalytics",}); var r = gas.Data.Ga.Get("ga:MYProfileID","2012-01-01","2014-02-20","ga:visitors"); //Specify some addition query parameters r.Dimensions = "ga:pagePath"; r.Sort = "-ga:visitors"; r.MaxResults = 5; //Execute and fetch the results of our query Google.Apis.Analytics.v3.Data.GaData d = r.Execute(); Console.WriteLine(d.TotalResults); Console.ReadLine(); }
我正在尝试使用此工具https://ga-dev-tools.appspot.com/explorer/查询我想要的结果.当我在我的代码中实现它时,它看起来像这样:
public static void Main(string[] args) { var serviceAccountEmail = "MY@developer.gserviceaccount.com"; var certificate = new X509Certificate2(@"C:\Users\User\Desktop\key.p12",X509KeyStorageFlags.Exportable); var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail) { Scopes = new[] { AnalyticsService.Scope.Analytics } }.FromCertificate(certificate)); // Create the service. //Twistandtango var gas = new AnalyticsService(new BaseClientService.Initializer() { HttpClientInitializer = credential,}); var r = gas.Data.Ga.Get("ga:MYProfileID","ga:visits"); //Specify some addition query parameters r.Dimensions = "ga:visitCount"; r.Metrics = "ga:visits"; r.Segment = "gaid::-1"; //r.Sort = "-ga:visitors"; r.MaxResults = 10000; //Execute and fetch the results of our query Google.Apis.Analytics.v3.Data.GaData d = r.Execute(); Console.WriteLine(d.TotalResults); Console.ReadLine(); } }
但是,在将指标(r.Metrics =“ga:visits”;)添加到项目后,我收到此错误:
Error 7 Property or indexer ‘Google.Apis.Analytics.v3.DataResource.GaResource.GetRequest.Metrics’ cannot be assigned to — it is read only
此处还有分析v3中的类索引:
有谁知道这是如何工作的?如何从我指定的时间范围中检索访客总数?
谢谢
解决方法
var r = gas.Data.Ga.Get("ga:MYProfileID","ga:visits");
尺寸不是必填项,因此您可以删除r.Dimensions =“ga:visitCount”;看看它返回了什么.
请记住,只需做Google.Apis.Analytics.v3.Data.GaData d = r.Execute();如果有更多的结果设置为最大结果,则不会返回所有行.您需要检查下一个链接以确保没有更多行.
关于下一个链接更新以回答下面的问题.
您当前将max-results设置为10000,这是可以在块中返回的最大行数.如果有超过10000行,那么你将得到一个nextlink,你需要请求下一行行. TotalResult将为您提供应返回的总行数.下面我继续使用.execute请求更多数据,直到没有下一个链接.
List result = new List(); do { try { GaData DataList = request.Execute(); // Make the request result.AddRange(DataList.Rows); // store the Data to return later // hack to get next link stuff totalResults = (!DataList.TotalResults.HasValue) ? 0 : Int32.Parse(DataList.TotalResults.ToString()); rowcnt = rowcnt + DataList.Rows.Count; NextLink = DataList.NextLink; request.StartIndex = rowcnt + 1 ; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); totalResults = 0; } } while (request.StartIndex <= totalResults);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。