【Python】徹底的なGoogleアナリティクスAPI v4の設定と実装

投稿日 2019年10月8日 >> 更新日 2023年12月14日

注意

Googleアナリティクス4(GA4)の「Google Analytics Data API v1」に関する設定はこちらの「【Googleアナリティクス4(GA4)】Google Analytics Data API v1の各種設定と実装」をご覧ください。

今回はGoogleアナリティクス(UA)API(Google Analytics API)の設定と実装を行います。

厳密にはアナリティクス Reporting APIというらしく、v3(バージョン3)とv4(バージョン4)があり、ここではv4での話です。

前提としては

image画像を添えて説明していきますが少し見難いかもしれません。しかし手を動かしながら進めて行けば直感的に行うべき操作が分かると思います。

公式チュートリアルと合わせて進めて行きましょう。※注意 公式のスクリプトファイルはPython2になっています。

実行環境&使用ライブラリ

実行環境
Windows Subsystem for Linux
Python 3.6.8
pip 9.0.1
使用ライブラリ ライセンス
google-api-python-client==1.7.11 Apache Software
oauth2client==4.1.3 Apache Software

サービスアカウントの設定

GoogleアナリティクスAPIを使う為には、Google Cloud Platformにてプロジェクトの作成・APIキーの取得・サービスアカウントを登録して秘密鍵を含むファイルをダウンロードし、お使いのGoogleアナリティクスにサービスアカウントを追加します。

※公式チュートリアル画面

上図にもあるサービスアカウントのページ(Google Cloud Platform)へ進むと、利用規約などの同意を求められるので、規約に目を通した上同意できればチェックを入れます。

なのでまずは、プロジェクトの作成から進めて行きたいと思います。

プロジェクトの作成

プロジェクトの選択、もしくわプロジェクトの作成を選択します。

お好きなプロジェクト名を入れて「作成」を押します。

1つプロジェクトが作成されたので、そのプロジェクト内でAPIキーとサービスアカウントを作成していきます。

APIキーの取得

続いてAPIキーを取得し、さまざまな種類のあるGoogleAPIのなかでどれを有効にするか(制限)選択します。

画面左上の「ナビゲーションメニュー」を開き、「APIとサービス」→「認証情報」をクリックします。

すると「認証情報を作成」とあるので、それをクリックし、「APIキー:シンプルAPIキー」を選択します。

APIキーが作成されたので、右下の「キーを制限」をクリックし有効にするAPIを選択します。

名前は分かりやすいので良いと思います。

下の方にスクロールすると「APIの制限」とあるので、「キーの制限」項目をクリックします。

下図のように複数のAPIが選べると思いますので、「Analytics Reporting API」「Google Analytics API」を選択し保存します。

もしもうまく作成できなければ、次に行うサービスアカウントの登録からやってみるのも手です。

サービスアカウントの登録&秘密鍵ファイルの取得

左上のナビゲーションメニューを開き「IAMと管理」→「サービスアカウント」をクリックします。

上部の「+サービスアカウントを作成」をクリックします。

①から③までの手続きを行います。

①ではアカウント名とアカウントIDです。

アカウントIDのアドレスはこの後のGoogleアナリティクスへ追加するアカウントとして使うので、テキストエディタなどでコピーをしておきましょう。

②では特に何もせず「続行」をクリックしました。

③では、秘密鍵を含むファイルをダウンロードするために「+キーを作成」をクリックします。

他は特に私は設定しませんでした。

するとキータイプを選択できるので、推奨されている「JSON形式」のファイルを選択します。

ダウンロードされたファイル名を「client_secrets.json」という名前に変更し、後ほどそのファイルを読み込むので分かりやすい場所に保管しておいてください。

次からはGoogleアナリティクスに先ほど作成したサービスアカウントを追加設定する作業です。

ここで必要になるのがサービスアカウントIDのアドレスです。(exsample@PROJECT-ID.iam.gserviceaccount.com)←このような

今のうちにコピーをしておきましょう。

Googleアナリティクスにサービスアカウント情報を追加

まずはGoogleアナリティクスを起動し、画面左下にある「管理」をクリックし、「ユーザー管理」を選択します。

すでにご自身のGoogleアカウントが登録されていると思います。

さらにサービスアカウントを追加するために、画面右上の方にある「⊕」ボタンをクリックし、「ユーザーを追加」を選びます。

先ほども言いましたサービスアカウントIDであるアドレスを入力し、「新規ユーザーにメールで通知する」のチェックを外します。

さらに権限では「表示と分析」にチェックが入っていることを確かめてから、画面右上の「追加」をクリックします。

下図のように追加されていれば完了です。

最後に、API実装時に渡すための「ビューID」のありかを確認します。

Googleアナリティクスの「管理」→「ビュー設定」に移動します。

「ビューID」という番号があるので、タブで開いておくかコピーしてテキストエディタに保存しておきます。

これでAPIを実装するための設定は一通り終わったので、ここからは公式チュートリアルでの実装を少しだけ変更して結果を出力させたいと思います。

Google Analytics Rporting API v4の実装

最初に必要なライブラリをインストールしてから話を進めて行きます。

インストール

クライアントライブラリのインストール


$ pip3 install google-api-python-client

# 公式には載っていませんがインストール
$ pip3 install oauth2client

同じ階層に秘密鍵のファイルを置く

サービスアカウントを登録した際にダウンロートした秘密鍵(client_secrets.json)を作業ディレクトリに移動します。

このファイルは後程のスクリプトファイル内で読み込みます。

HelloAnalytics.pyを作成

HelloAnalytics.pyのファイルは公式チュートリアルでダウンロードできますが、print()メソッドがPython2系になっているので注意が必要です。

少しだけ出力結果に変更を加えていますがコードを載せておきます。

# HelloAnalytics.py

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials


SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'client_secrets.json'
VIEW_ID = 'ビューID番号'

def initialize_analyticsreporting():
    """Initializes an Analytics Reporting API V4 service object.
      Returns:
        An authorized Analytics Reporting API V4 service object.
    """
    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):
    """Queries the Analytics Reporting API V4.
        Args:
        analytics: An authorized Analytics Reporting API V4 service object.
        Returns:
        The Analytics Reporting API V4 response.
    """
    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'}]
             }]
            }
            ).execute()


def print_response(response):
    """Parses and prints the Analytics Reporting API V4 response.
        Args:
        response: An Analytics Reporting API V4 response.
    """
    for report in response.get('reports', []):
        columnHeader = report.get('columnHeader', {})
        dimensionHeaders = columnHeader.get('dimensions', [])
        metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])

        for row in report.get('data', {}).get('rows', []):
            print(row)
            """
            dimensions = row.get('dimensions', [])
            dateRangeValues = row.get('metrics', [])

            for header, dimension in zip(dimensionHeaders, dimensions):
                print(header + ': ' + dimension)

            for i, values in enumerate(dateRangeValues):
                print('Date range: ' + str(i))
                for metricHeader, value in zip(metricHeaders, values.get('values')):
                    print(metricHeader.get('name') + ': ' + value)
            """


def main():
    analytics = initialize_analyticsreporting()
    response = get_report(analytics)
    print_response(response)


if __name__ == '__main__':
    main()
# 実行

$ python3 HelloAnalytics.py

{'dimensions': ['/', 'ZerofromLight'], 'metrics': [{'values': ['112']}]}
{'dimensions': ['/ai/', 'ネコ科分類器'], 'metrics': [{'values': ['2']}]}
{'dimensions': ['/blogs/', 'Blog Learning'], 'metrics': [{'values': ['119']}]}
{'dimensions': ['/blogs/?page=2', 'Blog Learning'], 'metrics': [{'values': ['22']}]}
{'dimensions': ['/blogs/?page=3', 'Blog Learning'], 'metrics': [{'values': ['17']}]}
{'dimensions': ['/blogs/?page=4', 'Blog Learning'], 'metrics': [{'values': ['10']}]}
{'dimensions': ['/blogs/blogs/Django/', 'Blog Learning'], 'metrics': [{'values': ['5']}]}
{'dimensions': ['/blogs/blogs/Python/', 'Blog Learning'], 'metrics': [{'values': ['4']}]}
{'dimensions': ['/blogs/blogs/サーバーサイド/', 'Blog Learning'], 'metrics': [{'values': ['2']}]}
{'dimensions': ['/blogs/blogs/プロフィール/', 'Blog Learning'], 'metrics': [{'values': ['2']}]}

出力結果は以下から取得しています。


body={
        'reportRequests': [{
            'viewId': VIEW_ID,
            'pageSize': 10,
            'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
            'metrics': [{'expression': 'ga:pageviews'}],
            'dimensions': [{'name': 'ga:pagePath'}, {'name': 'ga:pageTitle'}]
         }]
 }

要素を10個取得


'pageSize': 10,

過去7日間


'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],

ページビュー


'metrics': [{'expression': 'ga:pageviews'}],

ページのpathとページタイトル


'dimensions': [{'name': 'ga:pagePath'}, {'name': 'ga:pageTitle'}]

より詳しい内容は、公式ガイドへ

HttpError 403

HelloAnalytics.pyの実装時に、もしこのようなエラーを吐き出したらAPIが有効になっていない場合があります。

「HttpError 403 when requesting https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json returned "Analytics Reporting API has not been used in project 234309713206 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview?project=234309713206 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.". Details: "[{'@type': 'type.googleapis.com/google.rpc.Help', 'links': [{'description': 'Google developers console API activation', 'url': 'https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview?project=234309713206'}]}]"」

このエラーの手がかりは、上記のエラー内容のURLをクリックし有効にさせるべきAPIに直接飛ぶか、以下のように設定を行います。

Google Cloud Platformを開き、「APIとサービス」→「ライブラリ」をクリックします。

「Google Analytics API」「Google Analytics Reporting API」を検索し、「有効」になっているか確認します。

有効をクリックします。

有効になっていればOK。

再度HelloAnalytics.pyを実行し確認をしてみましょう。

今回はひとまずPythonでGoogleアナリティクスAPIを実装するところまでを行いました。

余力のある方は、APIを実践的に生かせる「【Python】GoogleアナリティクスAPI(Analytics Reporting API v4)でデータを取得する方法」をご覧ください。

それでは以上となります。

最後までご覧いただきありがとうございました。

一覧へ戻る