如何通过google analytics api获取数据零基础 python版

2013年8月23日 | 标签:

首先要思考下为什么google要开发api呢,因为google的产品用户很多,他们的需求也是各种各样的,打个比方adwords,用户可以下载google adwords editors这样的桌面软件去操作,也可以通过google adwords的界面去操作,但是用户同时也要操作baidu 推广助手,有技术的客户就想 能不能自己开发一款软件 打通这2个产品google adwords和百度推广,同时可以操作,所以api接口就给了这样的可能,这是和同类型产品对接,方便用户统一操作,

还有一个例子,google analytics自定义运用,每周都需要发报告给客户,虽然google analytics有自动报告功能,但是如果有报告固定的格式,每周都是人共去google analytics里面去拉数据 然后填进去的话, 完全可以用web或者客户端的方式自动去取数据,然后填充到模板里面(模板可以通过web方式整合成html代码 再通过api把html代码中的数字替换)再加个发信函数,这样每个星期都可以有一份图文并茂 并且随时调整模板的报告邮件了,同时你甚至可以同时集合ga和adwords Baidu的数据这样就省掉大量人工发信的时间。这里api的作用是整合其他信息,一起制作需要的产品,节约时间

未来的社会是开发的社会,只有把产品的接口开放出来,用户安装自己的想法加以利用就可以让产品使用的人更加方便

 

Google analytics的数据是支持通过api按需导出 甚至你可以制作成email或者整合在你的网站后台中,这些都只是需要api,再开始之前先介绍下

什么是api呢 你可以理解就是通用的函数 可以调用google的服务的数据 例如google  analytics数据,

什么是token,token就是一串帐号密码,不过这个是随机变动的,因为在互联网中传输信息,所以最好有一套随机变动的密码来保证信息的安全,

什么是Python,python是一个很简单的程序语言,安装下就可以用就和vb一样 但是他很强壮 据说只要电脑能做的事 他就能做 无所不能 和硬件交互也没问题的

什么是Json 文件 是一种类似txt文件的一种文本文件,这里用来保存机密的信息例如你的帐号密码

什么是Google api library库,电脑安装了python只能说是安装了一个基本的语言环境,你要实现某些功能还需要程序,google把这些可以操作自己服务的基础数据的文件打包成库文件 记住这里的库并不是所以的google的服务的程序都在里面,只是定义了一个基本的接口和传输方法,你要运行google analytics 还是需要定义一些函数来操作的 然后再引用google api的 库文件

什么是客户端 google的 api分多种 你既可以通过web 的应用来获取数据(要绑定运行的网站的域名,主要也是为安全) 也可以通过本地的程序,这里为了演示方法 我用的本地程序,所以我这里的客户端是桌面程序应用

 

下图是我在windows xp下面获得ga的数据的

 reuslts1

 

 

说下流程把

 

liucheng

  1. 开通API功能及相应的权限

这个这部分主要是因为要和google的api需要自动去开通

,首先默认情况下google是没有开放这个服务的,需要首先去告诉google 我是开发者,我要做一个项目,这个项目里面需要用到某些api功能,你给我开通,

https://code.google.com/apis/console/ 打开后

第一步是创建一个项目,

createproject

,创建项目的时候要一个名字

输入一些品牌信息,因为你还是需要用户去授权才能看的到的同时要要选择你的客户端,是web程序还是桌面程序,还是手机段,因为不同的项目代表满足不同的需求的程序,用到的api也是不一样的

 whenaccessshowingbrandinformation

这里我用的是google analytics api testing, 选择应用类型同时要要选择你的客户端,是web程序还是桌面程序,还是手机段,因为不同的项目代表满足不同的需求的程序,用到的api也是不一样的

whichdevicewilluseasclientsider

然后去到api控制台 打开google analytics的api开关,

turnonapi

然后我还有去申请开通认证功能 这里相当于使用这个api的帐号密码,

createaccess

 

google api只是提供一个通用的操作平台,但是用户能操作什么类型的哪个网站的数据还是和用户自身的权限有关系,这句话理解为 通过api程序,你可以导出,重组,任何网站的数据,但是前提是用户通过认证的时候先要有这个网站的权限。

 

可能有人会问 这里的api的帐号密码有什么用呢,其实这里是和你的操作限制挂钩,每隔project用到的每个google的服务每天都是有一个限额,比如google analytics是5w次,一天他只能帮你服务5w次,如果你还需要更多 你就需要买了,所以这个api的帐号密码就是你的额度挂钩的,如果你的帐号密码泄漏,别人就可以用你的额度,相当于用你的钱, 没有api的帐号密码那每个人每天使用的次数就没法限制了,

 

 

申好api和获取api帐号密码后,可以下载一个json文件,里面包含了你的api帐号密码信息,后面的analytics的api 例子用也有这个json文件你要替换的。相当于把api的帐号密码单独放一个文件保管,

clienttokengot

手中有了钥匙(api的帐号密码文件),

 2 安装api依赖的库文件 因为用的python 所以是python的库文件

要想能运行api还需要一些基本的函数库文件,这里因为我选的是python

https://developers.google.com/api-client-library/python/start/installation

googleapilibrariesforchoose

quickstartin

所以我要去安装他对于的库文件包,这里可能用一个教easy install的工具来安装,不信的是easy install也不是python自带的,  所以我闲要去安装easy install,

 

 2.1安装库文件闲安装easy install这个文件

还在这个工具的页面上有win 32版本我安装下,

https://pypi.python.org/pypi/setuptools/0.6c11

setuptoolsinstalforgooglelibary

自动会找到python的目录

setuptoolschooseinstalpath

然后会安装在python的目录下script的文件中,

setuptoolsinstallfile

然后我cmd进入这个文件夹

通过easy install 安装 安装google api python client side easyinstallapilibary

 

 

 

他会自动在lib文件下也就是库文件下个一个子文件夹site-packages安装,这里他是安装的一个google_api_python_client-1.2-py2.7.egg

eggiszipfileforgooglelibary

其实这个egg文件是一个压缩包,你用winrar打开就可以看的到里面几个文件夹 这就是基本的python库文件,一个叫apiclient是放基本文件,发起链接函数,返回错误函数还有一个oauth2client是放所有和安全授权有关的uritemplate里面放的是空的。

所有的api的使用都是先和google负责api的服务器发起通讯,这里要用到apiclient文件,开始使用的时候闲验证身份,这里用的oauth2client,然后就是创建服务对象这里用的还是apiclient 然后操作对方及方法

在安装python的库文件的地方 就可以直接下载几个例子了

https://developers.google.com/api-client-library/python/start/installation

这里我们下载下analytics的例子文件

 

 

tryexample

https://code.google.com/p/google-api-python-client/downloads/list

 smaplelist

下载解压以后 有很多google服务的例子 这里我就只用google analytics的文件夹 打开后 替换下client_sercrets文件

里面存放的api的帐号密码 用来确定你的身份和不要超过限制的

这个文件sample3

 

 

 

 

替换下json文件然后 在cmd中 运行下就可以了

 

firsttry

 

所以后

注意点就是api的链接很不稳定 因为是在中国    firsttry1lgoin   会先跳转到google网站验证你身份 是否可以获得.

 

 

 

 

 

 

 

 

 

 

 然后就可以获得了

 

 

 reuslts1

  1. 2014年9月17日22:56

    写的很不错,国内关于GA API的文章很少,参考了贵博客的文章才得以实现。

    • admin
      2015年1月18日18:21

      国内GA API文章少的原因是GA用户变少 必须使用vpn才能上 还有就是
      对这个工具的使用目前还停留在比较基础的应用
      希望google能够针对中国用户开辟一个方便登录和使用的入口

  2. derek
    2015年4月1日10:43

    stephen,可以说一下,通过GA API获得数据的基础上, 怎样去把数据保存到本地数据库, 然后怎样通过UA新出的User ID功能,用来跟已有的CRM数据库里面的用户表文件打通关联吗? 简单来说就是怎样让用户的行为数据表和客户关系表打通。谢谢。

    • admin
      2015年7月22日17:40

      这是一个系统的工程,如果是有开发背景 应该不难,整套流程是应该分这几步,第一,抓取数据,通过GA的API 注意vpn问题和api的限制就可以,没太大的难点
      第2就是存储数据,这里你就要选择数据库去存放 就是用你们公司现有的数据库 要开一张表,通过sql语句导入就可以,第3部,分析数据
      这里就需要把通过api导入的数据和你网站现在有的crm数据关联起来 这里就相当于excel的vlookup 这里的主键就是User id, 第4部 采取行动
      根据分析的数据 采取个体化营销,发手机短信啊 发邮件啊 甚至客户来到网站识别后推送 以及发微信h5里面识别后 跨屏推送 玩法很多
      核心就是数据打通

  3. 小菜
    2015年9月14日17:10

    业界良心好文章!

  4. Sean
    2016年7月28日13:23

    最后一步报连接错:
    Traceback (most recent call last):
    File “hello_analytics_api_v3.py”, line 162, in
    main(sys.argv)
    File “hello_analytics_api_v3.py”, line 51, in main
    scope=’https://www.googleapis.com/auth/analytics.readonly’)
    File “D:\software\Python34\lib\site-packages\google_api_python_client-1.5.1-py3.4.egg\googleapiclient\sample_tools.py”, line 90, in init
    File “D:\software\Python34\lib\site-packages\oauth2client-2.2.0-py3.4.egg\oauth2client\util.py”, line 135, in positional_wrapper
    File “D:\software\Python34\lib\site-packages\oauth2client-2.2.0-py3.4.egg\oauth2client\tools.py”, line 235, in run_flow
    File “D:\software\Python34\lib\site-packages\oauth2client-2.2.0-py3.4.egg\oauth2client\util.py”, line 135, in positional_wrapper
    File “D:\software\Python34\lib\site-packages\oauth2client-2.2.0-py3.4.egg\oauth2client\client.py”, line 2117, in step2_exchange
    File “D:\software\Python34\lib\site-packages\httplib2-0.9.2-py3.4.egg\httplib2\__init__.py”, line 1314, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File “D:\software\Python34\lib\site-packages\httplib2-0.9.2-py3.4.egg\httplib2\__init__.py”, line 1064, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File “D:\software\Python34\lib\site-packages\httplib2-0.9.2-py3.4.egg\httplib2\__init__.py”, line 987, in _conn_request
    conn.connect()
    File “D:\software\Python34\lib\http\client.py”, line 1279, in connect
    super().connect()
    File “D:\software\Python34\lib\http\client.py”, line 871, in connect
    self.timeout, self.source_address)
    File “D:\software\Python34\lib\socket.py”, line 516, in create_connection
    raise err
    File “D:\software\Python34\lib\socket.py”, line 507, in create_connection
    sock.connect(sa)
    TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

    E:\true_tmp\API>

    • admin
      2016年11月29日13:25

      你电脑直接访问https://www.googleapis.com/auth/analytics.readonly 你会发现无法访问 说明你需要用vpn才行哦

  5. learner
    2017年6月22日17:02

    验证成功后再运行报错
    Traceback (most recent call last):
    File “E:/360Downloads/google-api-python-client-samples-1.2/samples/analytics/hello_analytics_api_v3.py”, line 177, in
    main(sys.argv)
    File “E:/360Downloads/google-api-python-client-samples-1.2/samples/analytics/hello_analytics_api_v3.py”, line 58, in main
    scope=’https://www.googleapis.com/auth/analytics.readonly’)
    File “C:\Python27\lib\site-packages\googleapiclient\sample_tools.py”, line 95, in init
    service = discovery.build(name, version, http=http)
    File “C:\Python27\lib\site-packages\oauth2client\_helpers.py”, line 133, in positional_wrapper
    return wrapped(*args, **kwargs)
    File “C:\Python27\lib\site-packages\googleapiclient\discovery.py”, line 228, in build
    requested_url, discovery_http, cache_discovery, cache)
    File “C:\Python27\lib\site-packages\googleapiclient\discovery.py”, line 275, in _retrieve_discovery_doc
    resp, content = http.request(actual_url)
    File “C:\Python27\lib\site-packages\oauth2client\transport.py”, line 175, in new_request
    redirections, connection_type)
    File “C:\Python27\lib\site-packages\oauth2client\transport.py”, line 282, in request
    connection_type=connection_type)
    File “C:\Python27\lib\site-packages\httplib2\__init__.py”, line 1659, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File “C:\Python27\lib\site-packages\httplib2\__init__.py”, line 1399, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File “C:\Python27\lib\site-packages\httplib2\__init__.py”, line 1355, in _conn_request
    response = conn.getresponse()
    File “C:\Python27\lib\httplib.py”, line 1108, in getresponse
    raise ResponseNotReady()
    httplib.ResponseNotReady
    不知道是什么原因,请楼主帮忙看一下

  6. 花花
    2017年6月23日15:04

    我按照操作设置了python 但是google 验证点击同意之后,shell里面没有google的数据,好像身份验证没有成功,不知道是不是VPN的问题,vpn需要做什么设置吗