博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用Google Analytics API实现网站统计
阅读量:4120 次
发布时间:2019-05-25

本文共 4627 字,大约阅读时间需要 15 分钟。

    首先,申请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://uwnpi.baihongyu.com/

你可能感兴趣的文章
IPS开发手记【一】
查看>>
Java通用字符处理类
查看>>
文件上传时生成“日期+随机数”式文件名前缀的Java代码
查看>>
Java代码检查工具Checkstyle常见输出结果
查看>>
北京十大情人分手圣地
查看>>
Android自动关机代码
查看>>
Android中启动其他Activity并返回结果
查看>>
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
iWatch报错: Authorization request cancled
查看>>
iWatch报错: Authorizationsession time out
查看>>
如何运行从网上下载的iWatch项目详细步骤.
查看>>
X-code7 beta error: warning: Is a directory
查看>>
Error: An App ID with identifier "*****" is not avaliable. Please enter a different string.
查看>>
X-code beta 开发iWatch项目,运行没有错误,但是某些操作一点就崩,而且找不错误的原因场景一
查看>>
Xcode 报错: Extra argument in call
查看>>
iTunes Connect 上传APP报错: Communication error. please use diagnostic mode to check connectivity.
查看>>
#import <Cocoa/Cocoa.h> 报错 Lexical or Preprocessor Issue 'Cocoa/Cocoa.h' file not found
查看>>
`MQTTClient (~> 0.2.6)` required by `Podfile`
查看>>
X-Code 报错 ld: library not found for -lAFNetworking
查看>>