はじめてのアナリティクス Reporting API v4: インストール済みアプリケーション向け Python クイックスタート

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

1. API を有効にする

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

注: ウェブ クライアント ID またはインストール済みアプリケーション クライアントを作成するには、同意画面で製品名を設定する必要があります。まだ作成していない場合は、同意画面で設定を行うよう求められます。

認証情報を作成

  • [認証情報] ページを開きます。
  • [認証情報を作成] をクリックし、[OAuth クライアント ID] を選択します。
  • [アプリケーションの種類] で [その他] を選択します。
  • クライアント ID として quickstart を指定し、[作成] をクリックします。

[認証情報] ページで、新規作成したクライアント ID をクリックします。次に、[JSON をダウンロード] をクリックして、client_secrets.json という名前で保存します。このファイルは、このチュートリアルで後ほど使用します。

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.json をサンプルコードと同じディレクトリに移動します。
  3. VIEW_ID の値を置き換えます。View ID は、Account Explorer を使用して探すことができます。
"""Hello Analytics Reporting API V4."""

import argparse

from apiclient.discovery import build
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')
CLIENT_SECRETS_PATH = 'client_secrets.json' # Path to client_secrets.json file.
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'

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

  Returns:
    analytics an authorized analyticsreporting service object.
  """
  # Parse command-line arguments.
  parser = argparse.ArgumentParser(
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args([])

  # Set up a Flow object to be used if we need to authenticate.
  flow = client.flow_from_clientsecrets(
      CLIENT_SECRETS_PATH, scope=SCOPES,
      message=tools.message_if_missing(CLIENT_SECRETS_PATH))

  # Prepare credentials, and authorize HTTP object with them.
  # If the credentials don't exist or are invalid run through the native client
  # flow. The Storage object will ensure that if successful the good
  # credentials will get written back to a file.
  storage = file.Storage('analyticsreporting.dat')
  credentials = storage.get()
  if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)
  http = credentials.authorize(http=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
  • アプリケーションによって承認ページがブラウザに読み込まれます。
  • Google アカウントにまだログインしていない場合は、ログインするよう求められます。複数の Google アカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択するよう求められます。

以上の手順が完了すると、サンプルコードによって、指定されたビューの過去 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