Java调用Google Analytics API实现网站统计
来源:互联网 发布:春秋航空 知乎 编辑:程序博客网 时间:2024/06/07 00:30
首先,申请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"));
- }
- }
- }
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 IDpublic 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()方法即可。
注意:
- Table ID的数字前加上“ga:”,例如ga:47778978
- 要取得的维度和指标信息需要在query.setDimensions()和query.setMetrics()中设定一下,见上面例子。
- 维度和指标具体含义,见Google官方文档:http://code.google.com/intl/zh-CN/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html
- Java调用Google Analytics API实现网站统计
- Java调用Google Analytics API实现网站统计
- 使用Google Analytics来统计网站流量
- 如何利用google analytics事件目标统计网站转化率
- php 移动网站添加 google Analytics统计代码
- Google Analytics API发布
- Google Analytics API发布
- Google Analytics API实例
- google Analytics API使用
- java实现百度统计api调用
- Google Analytics多渠道实现
- 网站访问统计系统Piwik安装使用:支持插件扩展统计媲美Google Analytics
- Microsoft adCenter Analytics统计与Google Analytics、雅虎统计对比
- google analytics--网站分析利器
- 使用Google Analytics分析网站
- 使用Google Analytics分析网站
- 没有网站也能玩转Google Analytics
- 没有网站也能玩转Google Analytics
- 跨线程访问window控件
- 使用Cocos2d-x中的CCMenuItemToggle制作商店
- ListView子条目的高度,用其子布局自己定义
- WPF学习之入门篇
- Django中ListView分页技术
- Java调用Google Analytics API实现网站统计
- root 权限--待续
- eclipse离线安装插件
- JAVA中字符串和整型之间的转换
- cocos2d-x2.2 新建项目
- Linux-C学习笔记-双向循环链表(支持DEBUG调试)
- 级联查询在javascript与struts2中区别
- Expect 教程中文版
- object-c runloop