因为需要写一个 Blog Feature 的缘故,所以接触了下 GA 的 Python API,发现 G 家的 API 不是那么直观,比较绕,但是,在使用过程中发现其实 G 家的 API 设计挺有意思的,可能有一些新的设计理念,值得思考学习一番。但是这不是这篇文章的重点,这篇文章还是介绍一下 GA 的 Python API V4 版本的使用,顺带在最后解答几个我再使用过程中遇到的问题。

GA API 使用入门

目前 GA 的 API 是 V4 版本,据说 V3 版本还可以使用,但是我没有尝试,为了减少后续的升级,直接就上了 V4 的版本。V4 版本用起来比较蛋疼,但是无妨,按照官方的 Guide 还是能进行下去的,只是中途遇到了一些问题,这个后面说。

  1. 启用 API

    要开始使用 Analytics Reporting API v4,您需要先使用设置工具,该工具会引导您在 Google 云端平台控制台中创建项目,启用 API 以及创建凭据。

    这里要吐槽一番,G 家似乎把它的 GA 服务和 GCP 绑定在一起了,不知道我的理解对不对,反正我发现设置的项目 是通用的。这个不太理解,但是也不妨碍我的使用,所以按照以下步骤做就好了:

    1. 打开服务帐号页。如果看到相关提示,请选择项目。
    2. 点击创建服务帐号
    3. 创建服务帐号窗口中,键入服务帐号的名称,然后选择提供新的私钥。如果您希望将 G Suite 全网域权限授予该服务帐号,另请选中启用 G Suite 全网域委派功能。然后,点击创建

      这里提醒以下,创建私钥有 json 和 p12 模式,推荐使用 json,但是我使用的是 p12,因为我很久以前就已经申请过了。ok,到此,创建账户阶段算是完了,这里需要记录几个东西。

    4. KEY_FILE_LOCATION:这个就是刚才自动下载的私钥的本地存放地址

    5. SERVICE_ACCOUNT_EMAIL:在这个页面 里查找
    6. VIEW_ID: 在这个页面 里查看

  1. 安装 GA Python 包

    这个很简单,直接使用 pip 就好了,需要注意的是,最好连 PyOpenSSL 也装上,因为 p12 密钥文件要用到。

  2. 尝试示例

    您需要创建一个名为 HelloAnalytics.py 的文件,其中将包含指定的示例代码。所有代码你可以在我的 Github Repo 中找到:GA Demo Code。这里你有几个常量是需要更改的:

    因为刚才我们创建了几个 ID 的文件,所以需要把它放进代码里面,在代码里应该修改这里:

    把 15、16、17 行按照上面的 ID 替换掉。这样代码应该就可以运行了,尝试一下看看。如果发生错误,不妨看看我下面的问题解决或者好好利用 Google 搜索一番。

遇到的问题

  1. 访问错误或者无响应

type ConfigService struct{---------------------------------------------------------------------------ResponseNotReady                          Traceback most recent call last<ipython-input-49-87cd1de835f6> in <module>----> 1 main2 # initialize_analyticsreporting()

一开始看到第 3 行的错误时,我就猜测是墙的原因,所以就将 URL:https://analyticsreporting.googleapis.com/$discovery/rest 复制出来,在浏览器发现可以打开。所以这里我就没有想法了,因为我认为我的梯子是全局的,所以这段代码应该也是走的梯子,但是后面发现这就是打脸的想法。

在查找了一些资料和尝试了一些 DEMO 代码之后我发现应该还是代码没有走梯子的问题,所以就设置了一下 Http 的 proxy 参数,参考官网资料:httplib2 Http Object,然后配了一下 proxy 参数:

然后就发现这样居然就行了!真特么的逗。

  1. User does not have any Google Analytics account

这个问题比较简单,肯定最开始想的就是没有授权,所以就去搜了一下 GA 的用户授权,原来前边的授权和 GA 的授权没半毛钱的关系,所以还是得在 GA 上开一下授权:

这两个地方编辑一下就 OK 了。

  1. 怎么自己构造 API 数据

跟着 GA 的官方指导一直写下去发现是可以工作的,但是,发现 Demo 仅仅展示了 session 是怎么获取的,并没有其他的支持,所以我们还是需要自己阅读文档,所以参考了这个文档:GA 所有 Metric,通过这份文档,我们就可以自己根据需要搜索所需的数据了。

Reference

  1. httplib2:A comprehensive HTTP client library
  2. Analytics Google API Error 403: “User does not have any Google Analytics Account