【Python】GoogleアナリティクスのデータをAPIを使って取得する

最近うと自分のサイトの分析をしたいなと思い立ち、以前からサイトに設置しているGoogleアナリティクスのデータを使った分析を行うため、googleが提供しているAPIを使って自分のサイトのアクセスデータを取得していきたいと思います。

前準備

プライベートAPIなので、まずはサイトにアクセスして自分のAPI鍵を発行する必要があります。

基本的には以下のクイックスタートのとおりに進めていきます。
https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py

GoogleのAPIを使用するために必要なのはこの4つの条件を満たしていることです。

  • Developer ConsoleでGoogle AnalyticsのAPIが有効化されている
  • 秘密鍵のファイル(p12/json)が手元にある
  • API用のメールアドレスを作成済み
  • API用のメールアドレスを、Google Analyticsの該当のビューに権限付与済み

これをざっくりいうと、GoogleのプライベートAPIを利用するためには、「アナリティクスのAPI有効化」「プロジェクト・サービスアカウントを作成「アナリティクスのビューへのAPI権限の追加」この3点が必要があるということです。

まずは「Google Cloud Platform」に登録し、APIを有効化します。
https://console.developers.google.com/start/api?id=analyticsreporting.googleapis.com&credential=client_key

そのまま道なりに入力してAPIを有効化すればOKです。APIが有効化できたら次は以下のURLにアクセスして、新規プロジェクトを作成します。

https://console.developers.google.com/iam-admin/serviceaccounts

作成したら、次はサービスアカウントを作成します。

サービスアカウントの説明とかは適当でOKです。

入力できたら一番下の「作成」をクリックしてから、キャンセルを押して、前の画面に戻ります。

戻ると↑のような感じで、サービスアカウントが作成されているので、右端のタブをクリックして「鍵を作成」をクリックして秘密鍵を作成してダウンロードします。

秘密鍵は、jsonかp12かどちらでもコードの記述がすこし変わるだけでさして問題ありませんが、ここではとりあえずjsonにしておきます。

そして次はGoogleアナリティクスを開いて、APIにアクセス権限を付与します。具体的には、APIで情報を取得したいサイトの管理ページにアクセスし、右端の「ユーザー管理」をクリックします。

すると現在ビューへのアクセス権限のあるユーザー一覧が表示されるので、ここにユーザーを追加します。

具体的には右上の[+]のボタンをクリックすると、追加するユーザーのメールアドレスを尋ねられるので、そこにさっき作ったサービスアカウントのメールアドレス(~~.gserviceaccount.com)を追加して保存します。

これで前準備は完了です。

スポンサーリンク

APIからサイトのデータを取得する

それではここからはAPIを経由してGoogleアナリティクスにあるサイトのデータをPythonのスクリプトで取得したいと思います。

一応先ほど記載したリンクにGoogleアナリティクスの公式ページにPythonでのAPIの使い方のチュートリアルが載っているのですが、Python2.7で書かれているので、そのままコピペしてPython3で実行すると、printとかライブラリとかでエラーになります。

というわけで、いろいろ参考にしてPython3に書き換えました。まずは必要になるライブラリをインストールします。

# ターミナルで必要なライブラリをインストールする
$ pip install --upgrade google-api-python-client
$ pip install --upgrade oauth2client
$ pip install pyopenssl

PythonでNo module named oauth2client.service_accountが出た時は、oauth2clientが入っていないことが原因なので、インストールしておきましょう。

そして、こちらがサンプルコードになります。アレンジするのは「ローカル上での秘密鍵のパス」と「ViewID」と「アカウントID」3つです。

秘密鍵は自分のローカルのPCに落とした秘密鍵のパスで、アカウントIDは先ほどアナリティクスのビューに登録したサービスアカウントIDになります。

ビューIDはアナリティクスの「ビューの設定」を開くと表示されている数字になります。インデントなどおかしい場合はgithubの方のソースをコピペなりダウンロードして実行してみてください。

"""Hello Analytics Reporting API V4."""
import argparse
import os
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials 
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
DISCOVERY_URI = ('https://analyticsreporting.googleapis.com/$discovery/rest')

KEY_FILE_LOCATION = "ここに秘密鍵ファイルのパスを入力"  (例:C:\\Users\\~~.json)
SERVICE_ACCOUNT_EMAIL = 'アカウントID'(例:~~.gserviceaccount.com)
VIEW_ID = 'ビューID'


def initialize_analyticsreporting():
    """Initializes an analyticsreporting service object.
    Returns:   analytics an authorized analyticsreporting servicobject.
    """
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        KEY_FILE_LOCATION, SCOPES)
    # Build the service object.
    analytics = build('analyticsreporting', 'v4', credentials=credentials)
    return analytics

def get_report(analytics):
    # Use the Analytics Service Object to query the Analytics Reporting API V4.
    return analytics.reports().batchGet(
        body={
            'reportRequests': [
                {
                    'viewId': VIEW_ID,
                    'pageSize': 10,
                    'dateRanges': [
                        {'startDate': '7daysAgo', 'endDate': 'today'}
                    ],
                    'metrics': [
                        {'expression': 'ga:pageviews'},
                    ],
                    'dimensions': [
                        {'name': 'ga:pagePath'}, {'name': 'ga:pageTitle'}
                    ],
                    'orderBys': [
                        {'fieldName': 'ga:pageviews', 'sortOrder': 'DESCENDING'},
                    ]
                }]
            }
    ).execute()

def print_response(response):
    """Parses and prints the Analytics Reporting API V4 response."""
    for report in response.get('reports', []):
        rows = report.get('data', {}).get('rows', [])
        for row in rows:
            print(row)

analytics = initialize_analyticsreporting()
response = get_report(analytics)
print_response(response)

参照:https://github.com/beginerSE/python-google_api/blob/master/g-analytics.py

これを実行すると、

{‘dimensions’: [‘/2018/04/17/post-194/’, ‘【Python】Jupyter notebookの基本的な使い方を分かりやす
く説明する’], ‘metrics’: [{‘values’: [‘277’]}]}
{‘dimensions’: [‘/2018/03/04/2018-03-04-211747/’, ‘Pythonで自動売買Botを作る①~システムトレード
の流れを把握する’], ‘metrics’: [{‘values’: [‘197’]}]}
{‘dimensions’: [‘/2017/08/31/2017-08-31-195852/’, ‘【Python】Anacondaのインストールと初期設定か
ら便利な使い方までを徹底解説!’], ‘metrics’: [{‘values’: [‘190’]}]}
{‘dimensions’: [‘/2018/10/11/post-963/’, ‘【Python】Djangoを使ってウェブサイトを作成する その①’], ‘metrics’: [{‘values’: [‘132’]}]}
{‘dimensions’: [‘/2018/11/25/post-1253/’, ‘【就職】IT企業の客先常駐民おる・・・?’], ‘metrics’:
[{‘values’: [‘115’]}]}
{‘dimensions’: [‘/2018/08/20/post-645/’, ‘【Python】Kerasでディープラーニングによる画像認識をや
ってみる’], ‘metrics’: [{‘values’: [’90’]}]}
{‘dimensions’: [‘/category/itまとめ/’, ‘ITまとめ | 湊の研究室’], ‘metrics’: [{‘values’: [’69’]}]}
{‘dimensions’: [‘/2018/06/27/post-436/’, ‘Windows10にTensorflowとKerasがインストールできない時の
解決法’], ‘metrics’: [{‘values’: [’66’]}]}
{‘dimensions’: [‘/2017/04/06/2017-04-06-000000/’, ‘【時系列分析】ARCHモデルとGARCHモデルの分かり
やすい解説’], ‘metrics’: [{‘values’: [’65’]}]}
{‘dimensions’: [‘/2018/08/22/post-593/’, ‘【Python】テクニカル指標が簡単に計算できるTa-libの使い
方’], ‘metrics’: [{‘values’: [’65’]}]}

こんな感じで自分のブログの人気記事を取得できます。

get_report()のリクエストパラメータの引数である'dateRanges'の部分で期間を指定しています。

他にもmetrics:を弄ると、ページビューだけではなく、セッション・滞在時間・ユーザー属性などの様々なアクセスデータを取得することも可能です。

そして最後の'orderBys'はSQLの要領でデータをソートするように指定しているだけです。

パラメーターのdimensionmetricsは膨大で全部説明すると長くなるので、他の指標や次元が気になる人はGoogleAnalyticsAPIの公式ドキュメントを参照してください。

参照記事

https://omohikane.com/python_no_module_oauth2client/

https://torina.top/detail/357/

https://developers.google.com/analytics/devguides/reporting/core/v4/samples?hl=ja

https://note.nkmk.me/python-google-analytics-reporting-api-download/

関連記事:【Python】TwitterのAPIを簡単操作できる「Tweepy」の使い方

関連記事:【Python】CoinGeckoのAPIからビットコイン・アルトコインの価格データを取得する

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->