Analytics APIのサンプルソースの実行
大規模サイトになると初期設定で何百ものプロファイルやビュー作成が必要なる場合がある。アナリティクスの初期設計をExcelで作ったものをAPIで効率的にGoogle Analyticsに設定できないかやってみる。アナリティクスは素人だが、APIならエンジニアで出番じゃないかと。言語のHollow World!なんだろうけど、ここではAPIのサンプル起動までをやってみる。
アナリティクス Management API
まずはアナリティクス Management API を読む。
言語はGoogleなんでやっぱりPythonでしょ。ってことにする。
クイックスタート
AnalyticsAPIを有効にして、Google Analyticsと紐付けする。
https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/service-py?hl=ja
ステップ1、2を実施。
Pythonのインストール
バイナリーダウンロード。
https://www.python.org/downloads/windows/
バージョン2系と3系があるが、どうやら2系に方がいいらしい。(と社内のPython詳しいやつが言ってたので、それに従う。)
2系の直近版(Python 2.7.11rc1)をダウンロードする。
https://www.python.org/downloads/release/python-2711rc1/
ウィザードに従って「C:\Python2.7」にインストールする。
C:¥Python27とC:\Python27\Scriptsのパスを通しておく。
setuptoolsのインストール
自分の環境は、会社のプロキシがあるので、(ez_setup.py、setuptools-18.8.1.zip)を同じフォルダにダウンロードしておいて、 下記コマンドをダウンロードしたディレクトリで実行する。
python ez_setup.py
easy_install pip
pipを使ってgoogle-api-python-clientのインストール
pip install --upgrade google-api-python-client
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\cachecontr
ol\adapter.py", line 46, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\a
dapters.py", line 337, in send
conn = self.get_connection(request.url, proxies)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\a
dapters.py", line 245, in get_connection
proxy_manager = self.proxy_manager_for(proxy)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\a
dapters.py", line 155, in proxy_manager_for
**proxy_kwargs)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\p
ackages\urllib3\poolmanager.py", line 280, in proxy_from_url
return ProxyManager(proxy_url=url, **kw)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\p
ackages\urllib3\poolmanager.py", line 225, in __init__
proxy = parse_url(proxy_url)
File "C:\Python27\lib\site-packages\pip-7.1.2-py2.7.egg\pip\_vendor\requests\p
ackages\urllib3\util\url.py", line 187, in parse_url
raise LocationParseError(url)
LocationParseError: Failed to parse: 1.1.1.1:8080
会社のプロキシでこけた。。。
認証付きプロキシの場合は環境変数にプロキシサーバを設定する。
set HTTP_PROXY=http://proxy_user:proxy_password@proxy.example.com:8080
set HTTPS_PROXY=http://proxy_user:proxy_password@proxy.example.com:8080
環境変数を設定しないのなら
pip --proxy=HTTP_PROXY=http://proxy_user:proxy_password@proxy.example.com:proxy_port install --upgrade google-api-python-client
でもいい。
#何かとWindowsの環境変数にセットしておくのが便利と思う。
HelloAnalytics.pyを実行してみる。
service_account_emailとkey_file_locationを自分の環境に合わせる。
こけた。どうやらPyOpenSSLとsocksipy-branchが要るみたい。
pip install PyOpenSSL
pip install socksipy-branch
> python HelloAnalytics_org.py
Traceback (most recent call last):
File "HelloAnalytics_org.py", line 112, in <module>
main()
File "HelloAnalytics_org.py", line 107, in main
profile = get_first_profile_id(service)
File "HelloAnalytics_org.py", line 49, in get_first_profile_id
accounts = service.management().accounts().list().execute()
File "C:\Python27\lib\site-packages\oauth2client\util.py", line 140, in positional_wrapper
return wrapped(*args, **kwargs)
File "C:\Python27\lib\site-packages\googleapiclient\http.py", line 722, in execute
body=self.body, headers=self.headers)
File "C:\Python27\lib\site-packages\oauth2client\client.py", line 572, in new_request
self._refresh(request_orig)
File "C:\Python27\lib\site-packages\oauth2client\client.py", line 842, in _refresh
self._do_refresh_request(http_request)
File "C:\Python27\lib\site-packages\oauth2client\client.py", line 874, in _do_refresh_request
self.token_uri, method='POST', body=body, headers=headers)
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1609, 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 1351, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1272, in _conn_request
conn.connect()
File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1075, in connect
raise socket.error, msg
socket.error: [Errno 10049] 要求したアドレスのコンテキストが無効です。
またしてもプロキシサーバに阻まれた。いかん。
ソースでプロキシサーバを指定する。
http= httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'proxy.example.com, 8080, proxy_user = 'userid', proxy_pass ='password')) #この一行を追加する。
http = credentials.authorize(httplib2.Http())
サンプルは動いた。pythonはほぼ初見だが、なれるしかない。
プロキシの環境変素(HTTP_PROXY、HTTPS_PROXY)をセットしていればこのコードは不要っぽい。