Java调用Google Analytics API实现网站统计

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

    首先,申请Google帐号和Google Analytics服务,并将统计代码放入你想统计的网站中一段时间,确保你的Google Analytics中已有数据。

    在Google Analytics中,进入你的配置文件修改界面,如图,记下红色标记的数字,这是你的“Table ID”。


下面代码是我根据Google官方文档修改并注释的一段代码,就可以实现访问量等信息的统计了。

package cn.edu.KFC.bean;import com.google.gdata.client.analytics.AnalyticsService;import com.google.gdata.client.analytics.DataQuery;import com.google.gdata.data.analytics.AccountEntry;import com.google.gdata.data.analytics.AccountFeed;import com.google.gdata.data.analytics.DataEntry;import com.google.gdata.data.analytics.DataFeed;import com.google.gdata.util.AuthenticationException;import com.google.gdata.util.ServiceException;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;public class GoogleAnalytics // 使用ClientLogin 方法访问Google Analytics。其中,两个常量分别存储用户名和密码。 private static final String CLIENT_USERNAME = "anyone@gmail.com"; //Google 帐号 private static final String CLIENT_PASS = "1234567"//Google 密码 private static final String TABLE_ID = "ga:715123"; //此帐号有权访问的Google Analytics配置文件的TABLE ID public void myTest() {  try {   /*    * 系统创建服务对象。服务对象的参数是一个代表应用程序名称的字符串。随后,系统将采用 setUserCredentials 方法来处理    * Google Analytics(分析)授权。    */   // Service Object to work with the Google Analytics Data Export API.   AnalyticsService analyticsService = new AnalyticsService("gaExportAPI_acctSample_v2.0");   // Client Login Authorization.   analyticsService.setUserCredentials(CLIENT_USERNAME, CLIENT_PASS);   // Get data from the Account Feed.   getAccountFeed(analyticsService);  //获取帐号信息   // Access the Data Feed if the Table Id has been set.   if (!TABLE_ID.isEmpty()) {    // Get profile data from the Data Feed.    getDataFeed(analyticsService);  //获取数据信息(包括"指标"和"维度")   }  } catch (AuthenticationException e) {   System.err.println("Authentication failed : " + e.getMessage());   return;  } catch (IOException e) {   System.err.println("Network error trying to retrieve feed: "     + e.getMessage());   return;  } catch (ServiceException e) {   System.err.println("Analytics API responded with an error message: "       + e.getMessage());   return;  } } /**  * 获取帐号feed  * @param analyticsService  * @throws IOException  * @throws MalformedURLException  * @throws ServiceException  */ private static void getAccountFeed(AnalyticsService analyticsService)   throws IOException, MalformedURLException, ServiceException {  // Construct query from a string.  URL queryUrl = new URL("https://www.google.com/analytics/feeds/accounts/default?max-results=50");  // Make request to the API.  AccountFeed accountFeed = analyticsService.getFeed(queryUrl, AccountFeed.class);  // Output the data to the screen.  System.out.println("-------- Account Feed Results --------");  for (AccountEntry entry : accountFeed.getEntries()) {   System.out.println("\nAccount Name  = "     + entry.getProperty("ga:accountName")     + "\nProfile Name  = " + entry.getTitle().getPlainText()  //配置文件名称     + "\nProfile Id    = " + entry.getProperty("ga:profileId"//配置文件编号     + "\nTable Id      = " + entry.getTableId().getValue());   //配置文件的Table Id  } } /**  * 获取指标和维度信息  * @param analyticsService  * @throws IOException  * @throws MalformedURLException  * @throws ServiceException  */ private static void getDataFeed(AnalyticsService analyticsService)   throws IOException, MalformedURLException, ServiceException {  // Create a query using the DataQuery Object.  DataQuery query = new DataQuery(new URL("https://www.google.com/analytics/feeds/data"));  query.setStartDate("2011-10-01");  //要统计的数据的起始时间  query.setEndDate("2011-10-30");  //要统计的数据的结束时间  query.setDimensions("ga:pageTitle,ga:pagePath");   //要统计的维度信息  query.setMetrics("ga:pageviews,ga:bounces,ga:visits,ga:visitors");  //要统计的指标信息  query.setSort("-ga:pageviews");    query.setMaxResults(10);  query.setIds(TABLE_ID);  // Make a request to the API.  DataFeed dataFeed = analyticsService.getFeed(query.getUrl(),    DataFeed.class);  // Output data to the screen.  System.out.println("----------- Data Feed Results ----------");  for (DataEntry entry : dataFeed.getEntries()) {   System.out.println("\nPage Title = "     + entry.stringValueOf("ga:pageTitle") + "\nPage Path  = "     + entry.stringValueOf("ga:pagePath") + "\nPageviews浏览量  = "     + entry.stringValueOf("ga:pageviews") + "\nga:bounces = "     + entry.stringValueOf("ga:bounces") + "\nga:visits访问次数 = "     + entry.stringValueOf("ga:visits") + "\nga:visitors访问人数 = "     + entry.stringValueOf("ga:visitors"));  } }}

最后,使用任意方式(main()或servlet)调用这个class的myTest()方法即可。

注意:

  1. Table ID的数字前加上“ga:”,例如ga:47778978
  2. 要取得的维度和指标信息需要在query.setDimensions()和query.setMetrics()中设定一下,见上面例子。
  3. 维度和指标具体含义,见Google官方文档:http://code.google.com/intl/zh-CN/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html



           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值