Google AnalylticsのRealtime APIはGoogle Analytics画面のレポート>リアルタイムの数字をAPIで取得するものですが、公式ドキュメントにあるとおりベータで利用するには事前申請が必要...と思っていた訳ですが、普通にたたけばデータ取得できたのでこの数字を雑にSlackへ流すことにしました。
直近のイベントをSlackや別の何かですぐに気づきたい場合に利用できます。
V3のエンドポイントに対してRealtime API専用のdimensionsやmetricsを設定していく感じになります。無駄にDataFrameとか使っていますが出力を多少キレイにするためにtabulateパッケージを使ってSlackへ投稿していますので、以下のソースはサンプルというレベルです。
import httplib2
import json
import requests
import pandas as pd
from oauth2client.service_account import ServiceAccountCredentials
def ga_realtime():
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '' #file path
credentials = ServiceAccountCredentials.from_json_keyfile_name(
KEY_FILE_LOCATION, scopes=SCOPES)
session = requests.Session()
session.headers = {'Authorization': 'Bearer ' +
credentials.get_access_token().access_token}
args = {
'ids': 'ga:00000000000', # viewID
'metrics': 'rt:totalEvents',
'dimensions': 'rt:eventCategory,rt:eventAction,rt:eventLabel',
'filters': 'rt:eventAction==click'
}
response = session.get('https://www.googleapis.com/analytics/v3/data/realtime?ids={}&metrics={}&dimensions={}&filters={}'.format(
args['ids'], args['metrics'], args['dimensions'], args['filters']))
result = response.json()
list = []
try:
rows = result['rows']
for row in rows:
list.append(row)
df = pd.DataFrame(list, index=None, columns=[
'category', 'action', 'label', 'count'])
WEB_HOOK_URL = 'https://hooks.slack.com/services/....' # webhookurl
requests.post(WEB_HOOK_URL, data=json.dumps({
'text': df,
'username': u'bot',
'icon_emoji': u':robot_face:'
}))
except:
pass
サンプルだとイベントデータを取得していて且つフィルタでアクションが `click` のものだけを取得しています。
今個人的にはGCP内、具体的にはGoogle Functionsで動かしており。KEYはGCSで管理してしまっているため上のコードだけではちゃんと動かないのですが。
サクッと作って誰かに通知したいとかそんな用途だと、このくらいのレベル感がとても良い気がします。
0 コメント:
コメントを投稿