文章说明:此文章是应公司项目需要将Google Analytics 应用到Java项目中,用以实现记录项目中对于访问量问题统计分析,因此对Google Analytics 进行了学习,做此学习笔记。
一、使用流程简要说明
1)、创建Google账户、Google Analytics 账户
2)、将Google Analytics中创建的账户->管理->媒体资源->.js跟踪代码,将此代码加载到项目中需要进行统计的页面中。(此时每访问一次该页面,在Google Analytics 账户中就会看到访问量信息)
3)、将Google Analytics 统计信息,读取到Java项目中,进行后续业务操作。(以下我将会写出两个版本的读取方式分别对应的是2.0和3.0版本)
一、创建账户
1)、创建Google账户
2)、创建Google Analytics 账户(默认全网站扫描)
官方地址:http://www.google.com/analytics/ (注册地址-中文,网址填写正确)
账户说明:https://developers.google.com/analytics/ (官方接口文档)
二、配置Google Analytics 账户及使用
在Google Analytics 中存在两个关键代码信息:
跟踪代码:管理->账户->媒体资源->.js跟踪信息->跟踪代码,作用:此代码需要连同它所在的JS一同复制到需要统计的页面中,GA 会根据这个设置信息统计访问信息。
视图代码ID:管理->账户->媒体资源->全网站数据(默认)->查看设置->数据视图ID,作用:用以进行程序对GA数据统计数据进行抓取解析。当然此数据视图是可以进行自定义。
注:在配置好跟踪代码到项目中,在项目访问这个页面时所访问数据记录信息会在报告->实时中查看到。
再注:ga('set', 'location',‘’)可以在跟踪代码中使用此代码对GA中一些系统值进行修改,详情可参照官方:
https://developers.google.com/analytics/devguides/collection/analyticsjs/
三、java项目项目中抓取GA统计数据信息 --- 2.0版本 只是用于GA的数据抓取
1)、Maven 中 pom.xml jar 包配置文件
<dependency> <groupId>com.google.gdata</groupId> <artifactId>gdata-analytics</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>com.google.gdata</groupId> <artifactId>gdata-analytics-meta</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>com.google.gdata</groupId> <artifactId>gdata-core</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>com.google.gdata</groupId> <artifactId>google-collect</artifactId> <version>1.0</version> <classifier>rc1</classifier> </dependency> <dependency> <groupId>com.google.gdata</groupId> <artifactId>jsr305</artifactId> <version>1.0</version> </dependency>
2)、java中使用GA 代码
import com.google.gdata.client.analytics.AnalyticsService; import com.google.gdata.client.analytics.DataQuery; import com.google.gdata.data.analytics.DataEntry; import com.google.gdata.data.analytics.DataFeed; private static List<DataEntry> queryMethods() throws Exception { // 查询服务 DataQuery dataQuery = new DataQuery(new URL("https://www.google.com/analytics/feeds/data")); // APP id dataQuery.setIds("ga:数据视图ID不要忘了需要加入ga:"); // 开始时间 dataQuery.setStartDate("2014-01-01"); // 结束时间 dataQuery.setEndDate("2014-05-20"); // 查询的列 dataQuery.setDimensions("ga:pageTitle,ga:pagePath"); // 查询类型 dataQuery.setMetrics("ga:uniquePageviews"); //排序 dataQuery.setSort("-ga:uniquePageviews"); //过滤条件 //dataQuery.setFilters(filter); // 获取链接参数 AnalyticsService analyticsService = new AnalyticsService("gaExportAPI_acctSample_v2.1"); // 设置邮件密码 analyticsService.setUserCredentials("Google邮箱","密码"); // 获取数值 DataFeed dataFeed = analyticsService.getFeed(dataQuery.getUrl(),DataFeed.class); // 读取数值 return dataFeed.getEntries(); }
重要参考地址:
官方报表测试地址:http://ga-dev-tools.appspot.com/explorer/
官方帮助文档:https://developers.google.com/analytics/devguides/reporting/core/v2/gdataJava
过滤条件详细配置说明:https://developers.google.com/analytics/devguides/reporting/core/v3/reference?hl=zh-CN#filters
前提说明:在2.0中遇到了一个问题如果过于频繁的去读取GA数据会提示出以下问题:
User Rate Limit Exceeded. Please sign up 找了好久一直无法解决此问题,于是被迫升级为3.0版本,3.0版本如下所示。
四、java项目项目中抓取GA统计数据信息 --- 3.0版本 只是GA数据的抓取
*虽然能解决频繁访问问题,但是也存在固定的频率封顶
Google Analytics 数据导出3.0比2.0要麻烦,多出Google开发工具台注册项目,具体流程如下所示:
1)、在google 开发者工具台注册一个项目Projects,注意输入项目地址。
2)、项目名称->APIs & auth->Analytics API,开启Analytics API访问权限,在APIs & auth ->Analytics API->Quota 配置中可以对该项目Analytics API访问频率进行设置。
3)、APIs & auth ->Analytics API-> analytics.data.ga.get中可以进行对GA统计数据的测试,但要注意一点一定要将最右边的Authorize requests using OAuth 2.0 打开并授予相应权限,输入相应信息后便可进行查询测试。
4)、APIs & auth -> Credentials ->create new client ID ->service account 关键一步,为项目添加Service Account账户信息。注意此时创建完成时会给你一个Private Key需要你下载, 一定要妥善保存,不慎丢失可以创建一个新的Private Key
5)、APIs & auth -> Credentials 中可以看到Service Account信息,记录下它的Email address信息一般它的格式很长是xxxxxxxx@developer.gserviceaccount.com这种格式。
6)、关键一步讲5部得到的邮箱地址信息,登录到Google Analytics(http://www.google.com/analytics/ )账户中,在管理->账户->用户管理中将此邮箱地址添加为用户,并授予相应权限,此时就已经配置完成。
接下来说明在Java中如何使用Google Analytics 进行数据读取。
1)、Maven 中 pom.xml jar 包配置文件
<dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client</artifactId> <version> 1.18.0-rc </version> </dependency> <dependency> <groupId>com.google.apis</groupId> <artifactId>google-api-services-analytics</artifactId> <version>v3-rev91-1.18.0-rc</version> </dependency> <dependency> <groupId>com.google.http-client</groupId> <artifactId>google-http-client-jackson2</artifactId> <version>1.18.0-rc</version> </dependency> <dependency> <groupId>com.google.oauth-client</groupId> <artifactId>google-oauth-client-jetty</artifactId> <version>1.18.0-rc</version> </dependency> <dependency> <groupId>com.google.apis</groupId> <artifactId>google-api-services-drive</artifactId> <version>v2-rev123-1.18.0-rc</version> </dependency>
2)、java中使用GA 代码
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.analytics.Analytics; import com.google.api.services.analytics.AnalyticsScopes; import com.google.api.services.analytics.Analytics.Data.Ga.Get; import com.google.api.services.analytics.model.GaData; /** * gaData.getColumnHeaders() 查询出的结果的类的集合 * gaData.getRows() 查询出的数据的集合 */ private static GaData queryMethods() throws Exception { // 初始化 GA服务 Analytics analytics = initializeAnalytics(); // 获取查询参数 Get get = analytics .data() .ga() .get("ga:数据视图ID不要忘了需要加入ga:","2014-01-01", "2014-05-20", "ga:uniquePageviews"); // 查询的列 get.setDimensions("ga:pageTitle,ga:pagePath"); // 查询类型 get.setMetrics("ga:uniquePageviews"); //排序 get.setSort("-ga:uniquePageviews"); //过滤条件 //dataQuery.setFilters(filter); return get.execute(); } /** * 初始化GA 事务信息 * * @return * @throws Exception */ private static Analytics initializeAnalytics() throws Exception { HttpTransport httpTransport = GoogleNetHttpTransport .newTrustedTransport(); JsonFactory jsonFactory = new JacksonFactory(); // 作用域信息 List<String> list = new ArrayList<String>(); list.add(AnalyticsScopes.ANALYTICS_READONLY); //访问域设置 //证书存放地址 // 凭证证书信息 GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId("xxxxxxxx@developer.gserviceaccount.com") .setServiceAccountPrivateKeyFromP12File( new File("证书存放地址")) .setServiceAccountScopes(list).build(); // 初始化访问事务信息 return new Analytics.Builder(httpTransport, jsonFactory, null) .setHttpRequestInitializer(credential).build(); }
五、重要参考资料
google开发者工具台帮助说明:https://developers.google.com/console/help/new/#console
https://code.google.com/p/google-api-java-client/wiki/OAuth2#Service_Accounts
Google Analytics 配置教程:https://developers.google.com/analytics/solutions/articles/hello-analytics-api
Google Analytics 在线测试地址:http://ga-dev-tools.appspot.com/explorer/
相关推荐
【品优购电商项目资料(案例笔记素材)】 在当今数字化时代,电商平台的开发与运营已经成为企业不可或缺的一部分。"品优购"作为一个电子商务项目,其资料涵盖了从项目规划、技术选型、系统架构到运营策略等多个重要...
- 数据驱动:利用数据分析工具(如Google Analytics、Mixpanel等)进行决策,展现数据敏感性和分析能力。 5. 面试策略: - 展示问题解决能力:分享过去解决难题或推动项目成功的故事,体现自己的决策能力和执行力...
电大职业技能实训版计算机网络技术网络管理方向专业网站美工设计基础形成性考核答案.doc
计算机等级考试一级练习题解析.doc
机械设备电气控制(含PLC)(B)答案.doc
利用综合测评板以及若干电阻、电容元件设计制作电路,以产生以下四路信号: 幅度不小于3.2V,频率在19kHz到21kHz范围内连续可调的方波脉冲信号。 与方波脉冲信号同频率的正弦波信号,要求其输出电压失真度不超过5%,峰峰值(VPP)不低于1V。 与方波脉冲信号同频率且占空比在5%到15%之间连续可调的窄脉冲信号,幅度不小于3.2V。 与正弦波信号相交的余弦波信号,相位误差不超过5°,输出电压峰峰值(VPP)不小于1V。 所有信号的输出端均需连接1kΩ负载电阻(RL),并将各路信号输出连接至测评板的指定位置。同时,需在引线处贴上对应输出信号的标签,以便于后续测试。
【目标检测】榴莲叶片病害数据集1410张YOLO-VOC格式.docx
火力发电厂机组级检修项目管理标准分析.doc
自考电子商务法概论模拟试卷.doc
数据集介绍 本数据集旨在根据品牌商家的历史订单数据,构建一个预测模型,预估用户人群在规定时间内产生购买行为的概率。
电子商务管理课程实验指导书.doc
湘潭大学移动通信实验报告实验6GSM及GPRS移动台短消息发送及接收实验.docx
网络规划与组建实训指导.doc
网络服务平台电商服务平台合作协议书.doc
【目标检测】4种铁轨表面缺陷检测数据集4020张YOLO+VOC格式.docx
罗克韦尔自动化能源管理系统概述.docx
【目标检测】空中小目标无人机检测数据集840张YOLO+VOC.docx
计算机信息系统集成资质等级评定条件(修定版).doc
自考计算机应用管理信息系统开发.doc
【目标检测】80种手语检测数据集9648张YOLO+VOC.docx