Python 操作 GA API 指南

因为需要写一个 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,到此,创建账户阶段算是完了,这里需要记录几个东西。

    • KEY_FILE_LOCATION:这个就是刚才自动下载的私钥的本地存放地址
    • SERVICE_ACCOUNT_EMAIL:在这个页面 里查找
    • VIEW_ID: 在这个页面 里查看

    ?

    ?

  2. 安装 GA Python 包

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

    ?

  3. 尝试示例

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

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

    ??

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

遇到的问题

  1. 访问错误或者无响应

?

一开始看到第 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

原文地址:https://www.cnblogs.com/makor/p/GA-operation-with-python.html

时间: 2024-10-17 06:05:00

Python 操作 GA API 指南的相关文章

Python 操作Sonqube API 获取检测结果并打印

1.需求:每次Sonqube检查完毕后,需要登陆才能看到结果无法通过Jenkins发布后直接看到bug 及漏洞数量. 2.demo:发布后,可以将该项目的检测结果简单打印出来显示,后面还可以集成钉钉发送到群里. 1 # -*- coding: UTF-8 -*- 2 import sys 3 reload(sys) 4 sys.setdefaultencoding('utf8') 5 6 ''' 7 @author:jmmei 8 @file: SonarQubeDingtalk.py 9 @t

通过Python操作hbase api

# coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport import TSocket from thrift.protocol import TBinaryProtocol from thrift.transport import TTransport from hbase import Hbase import struct # Method for enco

Python 操作Redis

redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装和基本使用 Memcached安装: wget http://memcached.org/latest

Python操作rabbitmq redis memcache SQLalchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装和基本使用 Memcached安装: 1 2 3 4 5 6 7 8 wget http://memc

Python操作RabbitMQ、Redis、Mencache、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装和基本使用 Memcached安装: 1 2 3 4 5 6 7 8 wget http://memc

Python操作 Memcache、Redis、RabbitMQ、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 安装 yum -y install libevent-devel wget http://memcached.org/lat

17.Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装和基本使用 Memcached安装: ? 1 2 3 4 5 6 7 8 wget http://me