PythonでGoogleAnalyticsから情報を取得するには

こんにちは。エンジニアの深町です。

はじめに

Webシステムの保守ではたびたびセールやキャンペーン等のイベント対応を行うことがあると思います。
イベント対応中はGoogleAnalytics(以下GA)でアクティブユーザー(以下AU)が何人いるか等をみて、どのくらいの人数でどのくらいのCPU負荷がかかるのかを把握しています。その際、システムのパフォーマンス回りのチューニングや、次回のイベント時のサーバースペックアップの指標作成をしています。

ここは、みなさんに一度聞いてみたいのですが、
イベントごとに最大AU数等、GAの画面を毎回開いて確認することが億劫に感じてきている方もいるのではないでしょうか。
今回はそんな面倒な作業はプログラムに任せてしまおうということで
GAの情報を取得できるPythonプログラムを紹介します。

Pythonを使うことでこんなことができます!

Google Analyticsで表示するAU数やPV数、Session等のGAから見ることのできる様々な情報から瞬間的なアクティブユーザー最大数まで、GAを後から見てもわからないような情報をPythonプログラムで取得することができるようになります。

前提

・GAの設定は済んでいること(情報を取得したいサイトの数値等がGAでみれること)

GoogleAnalytics側の設定

PythonプログラムからGoogle AnalyticsにアクセスできるようにGoogle Analytics側の設定を行います。
以下リンクにアクセスします。

https://console.cloud.google.com/flows/enableapi?apiid=analyticsreporting.googleapis.com&credential=client_key&pli=1

以下流れで設定を進めてください・・・



一通り入力してください。


作成したJsonファイルは後に使います。


続いて以下リンク等で監視したいGA画面を開いて設定を進めてください。

https://analytics.google.com/

サービスアカウント作成で生成したメールアドレスをここに記入してください。

後に使用するのでビューの設定からビューIDを確認しておいてください。


少々手間な作業かもしれませんが、ここまでで一番重要な設定作業が終わりました。

Pythonでコーディング

コーディングに入る前に、Pythonをインストールしていない方は下記サイトを参考にPythonをインストールしてください。

https://www.python.jp/install/windows/install.html

管理者権限でコマンドプロンプトを起動し、下記コマンドを実行してモジュールをインストールしてください。
pip install google-api-python-client
pip install oauth2client

前段で作成したjsonファイルを今回作成するPython実行ファイルと同じ階層に配置します。
あとはPythonでコーディングするだけです。
取得例を1つ紹介します。

設定関連

KEY_FILE_LOCATIONには前段で生成したjsonファイル名を記載し、VIEW_IDはGAの管理画面で確認できたVIEW_IDを設定します。

from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient.discovery import build
import datetime
import os

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '生成したJsonファイル.json'
VIEW_ID = 'GAのViewID'
情報取得部分

リアルタイムのアクティブユーザー(AU)数の取得をします。

credentials = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)
    service = build('analytics', 'v3', credentials=credentials)

    # アクティブユーザーの取得例
    active_users = service.data().realtime().get(
      ids='ga:' + VIEW_ID,
      metrics='rt:activeUsers').execute()

ここまですると、以下GoogleAPIのリファレンスを見ることで様々な情報が取得できます。取りたい情報を取得し、自由にコーディングしてください。
Real Time Reporting API

https://developers.google.cn/analytics/devguides/reporting/realtime/v3?hl=ja

実行開始から実行終了までの間、数秒置きにAU数をログに落とす等のロジックを組んであげると効率よく監視できるようになりますね。

おわりに

システム間のAPI連携は設定周りがとても煩わしいのが常ですが、設定さえしてしまえば上記の通りコーディング自体は至って簡単です。
API連携系でやりたいことがあればその設定をどうすれば良いのかを調べることをお勧めします。
以上になります。この記事を読んでいただいた方のお役に立てたら幸いです。

関連記事

プロジェクトストーリー

おすすめ記事

技術

コメント

この記事へのコメントはありません。

カテゴリー

TOP
TOP