はじめてのアナリティクス Reporting API v4: サービス アカウント向け Python クイックスタート

このチュートリアルでは、アナリティクス Reporting API v4 にアクセスする手順を詳しく説明します。

1. API を有効にする

アナリティクス Reporting API v4 を利用するには、まずセットアップ ツールを使用し、Google Cloud Platform Console でのプロジェクトの作成、API の有効化、認証情報の作成を行う必要があります。

認証情報を作成

  1. [サービス アカウント] ページを開きます。プロンプトが表示されたら、 プロジェクトを選択します。
  2. [サービス アカウントを作成] をクリックします。
  3. [サービス アカウントを作成] ウィンドウで、サービス アカウントの名前を 入力して [新しい秘密鍵の提供] を選択します。サービス アカウントに G Suite ドメイン全体の権限を付与する場合は、 [G Suite ドメイン全体の委任を有効にする] も選択します。 最後に [作成] をクリックします。

新しい公開キーと秘密キーのペアが生成され、コンピュータにダウンロードされます。 このキーは再発行できませんので、大切に保管してください。

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

新規作成したサービス アカウントのメールアドレスは、次のようになります。

quickstart@PROJECT-ID.iam.gserviceaccount.com

このメールアドレスを使用して、API 経由でアクセスする Google アナリティクスのビューにユーザーを追加します。このチュートリアルでは、読み取りおよび分析権限のみが必要です。

2. クライアント ライブラリをインストールする

パッケージ マネージャーを使用するか、Python クライアント ライブラリを手動でダウンロードしてインストールできます。

pip

Python パッケージのインストールには、推奨ツールの pip を使用します。

sudo pip install --upgrade google-api-python-client

setuptools

setuptools パッケージに含まれる easy_install ツールを使用します。

sudo easy_install --upgrade google-api-python-client

手動インストール

最新の Google API Python クライアント ライブラリをダウンロードし、コードを解凍して実行します。

sudo python setup.py install

3. サンプルをセットアップする

HelloAnalytics.py という名前のファイルを 1 つ作成する必要があります。このファイルには指定のサンプルコードを記述します。

  1. 次のソースコードをコピーするかダウンロードして、HelloAnalytics.py に記述します。
  2. 以前ダウンロードした client_secrets.p12 をサンプルコードと同じディレクトリに移動します。
  3. SERVICE_ACCOUNT_EMAIL および KEY_FILE_LOCATION の値を Developers Console に表示された適切な値に置き換えます。
  4. VIEW_ID の値を置き換えます。View ID は、Account Explorer を使用して探すことができます。
"""Hello Analytics Reporting API V4."""

import argparse

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 = '<REPLACE_WITH_P12_FILE>'
SERVICE_ACCOUNT_EMAIL = '<REPLACE_WITH_SERIVICE_ACCOUNT_EMAIL>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'

def initialize_analyticsreporting():
  """Initializes an analyticsreporting service object.

  Returns:
    analytics an authorized analyticsreporting service object.
  """

  credentials = ServiceAccountCredentials.from_p12_keyfile(
    SERVICE_ACCOUNT_EMAIL, KEY_FILE_LOCATION, scopes=SCOPES)

  http = credentials.authorize(httplib2.Http())

  # Build the service object.
  analytics = build('analytics', 'v4', http=http, discoveryServiceUrl=DISCOVERY_URI)

  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,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}]
        }]
      }
  ).execute()

def print_response(response):
  """Parses and prints the 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', [])
    rows = report.get('data', {}).get('rows', [])

    for row in rows:
      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()

4. サンプルを実行する

次のコマンドを使用してサンプルを実行します。

python HelloAnalytics.py

以上の手順が完了すると、サンプルコードによって、指定されたビューの過去 7 日間のセッション数が出力されます。

トラブルシューティング

AttributeError: 「Module_six_moves_urllib_parse」オブジェクトに「urlparse」属性がありません。

Mac OSX でデフォルト インストールの "six" モジュール(このライブラリに依存)が、pip がインストールするモジュールよりも先に読み込まれた場合に、このエラーが発生します。この問題を修正するには、以下の手順で PYTHONPATH システム環境変数に pip のインストール先を追加します。

  • 次のコマンドで pip のインストール先を確認します。

    pip show six | grep "Location:" | cut -d " " -f2

  • ~/.bashrc ファイルに以下の行を追加します。 &lt;pip_install_path&gt; は、上記のコマンドで確認した値に置き換えます。

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>

  • 開いているターミナル ウィンドウで、次のコマンドを使って ~/.bashrc ファイルを 再度読み込みます。

    source ~/.bashrc