因为需要写一个 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

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

  1. python操作ansible api示例

    #!/usr/bin/env python # -*- coding:utf-8 -*- import json import shutil from collections import named ...

  2. python 操作 saltstack Api(二) 示例

    获取token #!/usr/bin/env python #-*-coding:utf--*- import urllib import urllib.parse import urllib.req ...

  3. Python 操作Zabbix API 获取ERROR级别告警信息并打印

    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...

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

    1.需求:每次Sonqube检查完毕后,需要登陆才能看到结果无法通过Jenkins发布后直接看到bug 及漏洞数量. 2.demo:发布后,可以将该项目的检测结果简单打印出来显示,后面还可以集成钉钉发 ...

  5. 通过Python操作hbase api

    # coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport ...

  6. Redis - Python操作Redis

    目录 Python操作Redis 一. Redis安装和基本使用 二. Python操作Redis API使用 1.操作模式 2.连接池 3.Django配置Redis 4.操作 Python操作Re ...

  7. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...

  8. 运营的Python指南 - Python 操作Excel

    这是一份写给运营人员的Python指南.本文主要讲述如何使用Python操作Excel.完成Excel的创建,查询和修改操作. 相关代码请参考 https://github.com/RustFishe ...

  9. python实现elasticsearch操作-CRUD API

    python操作elasticsearch常用API 目录 目录 python操作elasticsearch常用API1.基础2.常见增删改操作创建更新删除3.查询操作查询拓展类实现es的CRUD操作 ...

随机推荐

  1. 实现我博客旁边的线条效果 html canvas-nest.js 源码

    canvas-nest.js 这个js文件可以用来实现炫酷的线条与鼠标进行交互的功能,具体效果如图所示 js具体源码如下: /** * Copyright (c) 2016 hustcc * Lice ...

  2. 推荐的五款市面上常用的免费CMS建站系统

    我做设计也有不少年头了,很多客户或者朋友找我做网站的时候,一般问我的是用什么软件系统给他们做.大部分客户希望用的软件是免费的.所以今天给大家介绍五款我自己用过还不错的,重点是还免费的建站系统. Met ...

  3. 【JMeter】if语句中不能Failure=false解决办法

    错误写法: if(roomId.matches("regEx")) Failure=false; else{ Failure=true; FailureMessage=" ...

  4. 开源一个上架 App Store 的相机 App

    Osho 相机是我独立开发上架的一个相机 App,App Store地址:https://itunes.apple.com/cn/app/osho/id1203312279?mt=8.它支持1:1,4 ...

  5. JavaWeb框架_Struts2_(五)----->Struts2的标签库

    1.  Struts2的标签库 1.1 Struts2标签库概述 Struts2的标签库可以分为以下3类:用户界面标签.非用户界面标签.AJAX标签; 2.1.1 Struts2标签库的分类和使用 1 ...

  6. C#创建对象时各种初始化属性、字段的方式的执行顺序

    创建对象代码如下: new FilterInfo(Student.CreateTimeProperty,"朱七",Express.Equals,Relationship.Or) { ...

  7. [array] leetcode - 34. Search for a Range - Medium

    leetcode - 34. Search for a Range - Medium descrition Given an array of integers sorted in ascending ...

  8. softmax分类算法原理(用python实现)

    逻辑回归神经网络实现手写数字识别 如果更习惯看Jupyter的形式,请戳Gitthub_逻辑回归softmax神经网络实现手写数字识别.ipynb 1 - 导入模块 import numpy as n ...

  9. 7.nginx伪静态规则

    网上收集的一些常用的,要用的时候就仿照一下,或直接拿来用. WordPress伪静态规则 location / { index index.html index.php; if (-f $reques ...

  10. Webpack 2 视频教程 013 - 自动分离 CSS 到独立文件

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...