Google Analytics関連の開発メモ

Google Analytics関連で開発したネタをまとめた

Selenium&PythonでGoogle Analyticsを操作する

Analytics APIGoogle Anayticsは使えたので、Seleniumでもやってみた。

 

Selenium Client & WebDriver の設定

なにはともあれ環境を作る。

http://docs.seleniumhq.org/download/からダウンロードする。

pip install selenium

 

Seleniumのテストケースを作る。

Google Analyticsの画面を開いて、Seleniumを起動。

試しに新しいプロパティを作成してみる。

f:id:kanpuri:20151225130218p:plain

上記のような感じで操作が記録される。

記録を止めて、「ファイル>テストケースを保存」すると、テストケースがhtmlファイルに出力される。

 

pythonアプリを作ってみる

このテストケースからSeleniumで自動化したい処理を記述する。

 

# -*- coding: utf-8 -*-
'''
Created on 2015/12/21

@author: kanpuri
'''
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import FirefoxProfile
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException

path_to_my_profile = 'C:\\Users\kanpuri\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\nhlzxg5i.ga_profile'
my_profile_name = "ga_profile"

analytics_id = 'a12345678w12345678p12345678' #GAのURLにあるアナリティクスIDを入れる
property_url = analytics_id + '/%3Fm.page%3DNewProperty/' #新規Webプロパティの作成
ga_url_class_id = "(//input[@type='text'])[9]"
ga_indutry_btn_id = "//div[@id='ID-m-content']/div/div/div/div/div/div[2]/div/ui-view/form/section[4]/section[2]/div[2]/ga-industry-selector/ga-select-dropdown/ga-dropdown/button"
ga_indutry_menu_id = "//div[@id='ID-m-content']/div/div/div/div/div/div[2]/div/ui-view/form/section[4]/section[2]/div[2]/ga-industry-selector/ga-select-dropdown/ga-dropdown/div/ga-select-menu/div/ul/li[9]/div"
ga_time_zone_btn_path = "//div[@id='ID-m-content']/div/div/div/div/div/div[2]/div/ui-view/form/section[4]/section[3]/div[2]/ga-time-zone-picker/div/ga-select-dropdown/ga-dropdown/button"
ga_time_zone_menu_path = "//div[@id='ID-m-content']/div/div/div/div/div/div[2]/div/ui-view/form/section[4]/section[3]/div[2]/ga-time-zone-picker/div/ga-select-dropdown/ga-dropdown/div/ga-select-menu/div/ul/li[176]/div"

profile = FirefoxProfile(path_to_my_profile)
driver = webdriver.Firefox(firefox_profile=profile)

driver.implicitly_wait(60)
ga_url = "https://www.google.com/" + "analytics/web/#management/Settings/" + property_url

driver.get(ga_url)

driver.find_element_by_name("name").clear()
driver.find_element_by_name("name").send_keys("property1")
driver.find_element_by_xpath(ga_url_class_id).clear()
driver.find_element_by_xpath(ga_url_class_id).send_keys("www.hoge.com")
driver.find_element_by_xpath(ga_indutry_btn_id).click()
driver.find_element_by_xpath(ga_indutry_menu_id).click()
driver.find_element_by_xpath(ga_time_zone_btn_path).click()
driver.find_element_by_xpath(ga_time_zone_menu_path).click()
driver.find_element_by_xpath("//button[@type='submit']").click()

こんな感じ。ちなみにFireFoxのプロファイルを読み込んでAnalyticの画面にログインしないで開けるようにしている。

profile = FirefoxProfile(path_to_my_profile)
driver = webdriver.Firefox(firefox_profile=profile)

 これをやらないと毎度GA(Google Analytics)にログインしないといけないので面倒である。

ちなみにFireFoxのプロファイルの作り方はWindowsコマンドプロンプトを起動して

firefox.exe -P

として新しいプロファイルを作り、予めGAにログインしておきCookieを保持しておけばよい。

プロファイルは

C:\Users\kanpuri\AppData\Roaming\Mozilla\Firefox\Profiles\nhlzxg5i.ga_profile

のように保存される。これを読み込んでSeleniumを起動しているってわけ。

もろもろのSeleniumAPIは本家のドキュメントを嫁ってことで以上です。

Selenium WebDriver — Selenium Documentation

 

#しかし、GAの画面のオブジェクトにnameがついてないので、ソースは非常に汚いですな。

 

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)をセットしていればこのコードは不要っぽい。

Google アナリティクス個人認定資格(GAIQ)の取得

取り急ぎGAIQ取れって上司に言われたので、以下2日で合格した。ギリ82%。

 

GAIQについて(Google

まずはGAIQって何ってところから勉強する。

support.google.com

 

アナリティクスアカデミーで勉強

動画で概要を勉強する。アナリティクスアカデミー

 

Google アナリティクス個人認定資格(GAIQ)学習ガイド

Googleアナリティクスの内容を勉強する。

Google アナリティクス個人認定資格(GAIQ)学習ガイド - アナリティクス ヘルプ

 

試験の受け方を事前に確認

日本語GAIQをGoogle Partnersからログインし受験する手順 | Googleアナリティクス教育トレーニングサービス

このサイト見たら大体わかった。

 

GAIQ取ってる人にこの本見たら受かるっていうので、買ってみた。

 模擬問題全73問付き!GAIQ対策テキスト[2015年7月改訂/新試験対応版]

 

Google Analyticsの画面をほとんど触ってなくても、試験は座学で合格できる。

 SEからすると触りながら理解するもんだが、とりあえず今週中に取れってことなので、座学だけでもなんとか受かったが、合格しただけでペーパードライバー状態。このサイトでGAを真面目に触れるようになるつもり。