Hello Analytics Reporting API w wersji 4; krótkie wprowadzenie do Pythona dla zainstalowanych aplikacji

W tym samouczku opisujemy krok po kroku, jak uzyskać dostęp do interfejsu Analytics Reporting API w wersji 4.

1. Włącz API

Aby zacząć korzystać z interfejsu Analytics Reporting API w wersji 4, musisz najpierw użyć narzędzia do konfiguracji, które przeprowadzi Cię przez proces tworzenia projektu w Konsoli interfejsów API Google, włączania interfejsu API i tworzenia danych logowania.

Uwaga: aby utworzyć identyfikator klienta internetowego lub klienta zainstalowanej aplikacji, musisz ustawić nazwę usługi na ekranie zgody. Zobaczysz prośbę o skonfigurowanie ekranu akceptacji.

Utwórz dane logowania

  • Otwórz stronę Dane logowania.
  • Kliknij Utwórz dane logowania i wybierz Identyfikator klienta OAuth.
  • Jako Typ aplikacji wybierz Inny.
  • Nadaj identyfikatorowi klienta quickstart, a następnie kliknij Create (Utwórz).

Na stronie Dane logowania kliknij nowo utworzony identyfikator klienta, a następnie Pobierz plik JSON i zapisz go jako client_secrets.json. Będzie on potrzebny w dalszej części samouczka.

2. Instalowanie biblioteki klienta

Użycie pip razem z venv jest zalecanym sposobem instalowania pakietów Pythona: sudo -s apt-get install python3-venv python3 -m venv analytics-quickstart source analytics-quickstart/bin/activate pip install --upgrade google-api-python-client2 pip install --upgrade oauth2client

3. Konfigurowanie przykładu

Musisz utworzyć jeden plik o nazwie HelloAnalytics.py, który będzie zawierał podany przykładowy kod.

  1. Skopiuj lub pobierz ten kod źródłowy do HelloAnalytics.py.
  2. Przenieś pobrany wcześniej plik client_secrets.json do tego samego katalogu, w którym znajduje się przykładowy kod.
  3. Zastąp wartość VIEW_ID. Identyfikator widoku możesz znaleźć w Eksploratorze kont.
"""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']
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('analyticsreporting', 'v4', http=http)

  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. Uruchamianie przykładowego

Uruchom przykład za pomocą polecenia:

python HelloAnalytics.py
  • Aplikacja wczyta w przeglądarce stronę autoryzacji.
  • Jeśli nie zalogujesz się na konto Google, pojawi się prośba o zalogowanie. Jeśli jesteś zalogowany(-a) na kilku kontach Google, pojawi się prośba o wybranie jednego konta, którego chcesz używać do autoryzacji.

Gdy wykonasz te czynności, w przykładzie wyświetli się liczba sesji dla danego widoku danych z ostatnich 7 dni.

Rozwiązywanie problemów

Błąd atrybutu: obiekt „Module_six_moves_urllib_parse” nie ma atrybutu „urlparse”

Ten błąd może występować w systemie Mac OSX, gdy domyślna instalacja modułu „six” (zależność tej biblioteki) jest załadowana przed zainstalowaniem, w którym zainstalowano pip. Aby rozwiązać ten problem, dodaj lokalizację instalacji pip do zmiennej środowiskowej PYTHONPATH:

  • Określ lokalizację instalacji pip za pomocą tego polecenia:

    pip show sześć | grep "Location:" | cut -d " " -f2

  • Dodaj do pliku ~/.bashrc ten wiersz, zastępując &lt;pip_install_path&gt; wartością określoną powyżej:

    eksportuj PYTHONPATH=$PYTHONPATH:<ścieżka_instalacji>pip>

  • Załaduj ponownie plik ~/.bashrc w otwartych oknach terminala za pomocą tego polecenia:

    źródło ~/.bashrc