שלום Analytics Reporting API v4; מדריך למתחילים של Python לאפליקציות מותקנות

במדריך הזה מפורטים השלבים לגישה אל Analytics Reporting API v4.

1. הפעלת ה-API

על מנת להתחיל להשתמש ב-Analytics Reporting API v4, קודם צריך להשתמש בכלי ההגדרה, שמדריך אתכם ביצירת פרויקט במסוף Google API, הפעלת ה-API ויצירת פרטי כניסה.

הערה: כדי ליצור מזהה לקוח באינטרנט או לקוח של אפליקציה מותקנת, עליך להגדיר שם מוצר במסך ההסכמה. אם עדיין לא עשית זאת, תוצג לך בקשה להגדיר את מסך ההסכמה.

יצירת פרטי כניסה

  • פותחים את הדף 'פרטי כניסה'.
  • לוחצים על Create credentials ובוחרים באפשרות OAuth client ID.
  • בשדה סוג האפליקציה, בוחרים באפשרות אחר.
  • נותנים שם לquickstart של מזהה הלקוח ולוחצים על quickstart.

בדף Credentials, לוחצים על מזהה הלקוח החדש שנוצר, לוחצים על Download JSON ושומרים אותו בתור client_secrets.json. תצטרכו אותו בהמשך המדריך.

2. התקנת ספריית הלקוח

הדרך המומלצת להתקנת חבילות Python היא השימוש ב-pip יחד עם venv:

3. הגדרת הדוגמה

תצטרכו ליצור קובץ יחיד בשם HelloAnalytics.py שיכיל את הקוד לדוגמה הנתון.

  1. העתק או הורד את קוד המקור הבא אל HelloAnalytics.py.
  2. מעבירים את client_secrets.json שכבר הורדתם לאותה ספרייה שבה נמצא הקוד לדוגמה.
  3. צריך להחליף את הערך של VIEW_ID. בעזרת סייר החשבונות אפשר לאתר מזהה תצוגה מפורטת.
"""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. הרצת הדוגמה

מריצים את הדוגמה באמצעות:

python HelloAnalytics.py
  • האפליקציה תטען את דף ההרשאה בדפדפן.
  • אם אתם עדיין לא מחוברים לחשבון Google, תתבקשו להתחבר. אם אתה מחובר לחשבונות Google מרובים, תתבקש לבחור חשבון אחד שישמש עבור ההרשאה.

כשתסיימו את השלבים האלה, הדגימה תייצר פלט של מספר הסשנים בשבעת הימים האחרונים עבור התצוגה המפורטת הנתונה.

פתרון בעיות

AttributeError: לאובייקט 'Module_six_moves_urllib_parse' אין מאפיין 'urlparse'

שגיאה זו עלולה להתרחש ב-Mac OSX, כאשר התקנת ברירת המחדל של המודול "six" (תלות בספרייה זו) נטענת לפני המודול שהותקן ב-PIP. כדי לפתור את הבעיה, צריך להוסיף את מיקום ההתקנה של PIP למשתנה סביבת המערכת PYTHONPATH:

  • אפשר לקבוע את מיקום ההתקנה של PIP באמצעות הפקודה הבאה:

    pip show שש | gRep "Location:" | cut -d " " -f2

  • מוסיפים את השורה הבאה לקובץ ~/.bashrc ומחליפים את &lt;pip_install_path&gt; בערך שנקבע למעלה:

    ייצוא PYTHONPATH=$PYTHONPATH:<pip_install_path>

  • טוענים מחדש את הקובץ ~/.bashrc בכל חלונות טרמינל פתוחים באמצעות הפקודה הבאה:

    מקור ~/.bashrc