שלום Analytics Reporting API v4; מדריך למתחילים של Python לחשבונות שירות

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

‫1. הפעלת ה-API

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

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

  1. פותחים את הדף חשבון שירות. אם מתבקשים, בוחרים פרויקט.
  2. לוחצים על Create Service Account ומזינים את השם ואת התיאור של חשבון השירות. אפשר להשתמש במספר של חשבון השירות שמוגדר כברירת מחדל, או לבחור מספר אחר וייחודי. בסיום, לוחצים על יצירה.
  3. הקטע הרשאות לחשבון שירות (אופציונלי) לא נדרש. לוחצים על Continue.
  4. במסך Grant users access to this service account גוללים למטה לקטע Create key. לוחצים על Create key.
  5. בחלונית הצדדית שמופיעה, בוחרים את הפורמט של המפתח: מומלץ JSON.
  6. לוחצים על יצירה. זוג המפתחות הציבורי/הפרטי החדש נוצר והורדה למחשב שלך. הוא משמש כעותק היחיד של המפתח הזה. למידע נוסף על אחסון מאובטח, קראו את המאמר ניהול מפתחות של חשבונות שירות.
  7. לוחצים על Close בתיבת הדו-שיח Private key saved to your במחשב, ולאחר מכן לוחצים על Done כדי לחזור לטבלה של חשבונות השירות.

הוספת חשבון שירות לחשבון Google Analytics

לחשבון השירות החדש תהיה כתובת אימייל שנראית כך:

quickstart@PROJECT-ID.iam.gserviceaccount.com

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

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

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

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

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

  1. העתק או הורד את קוד המקור הבא אל HelloAnalytics.py.
  2. מעבירים את client_secrets.json שכבר הורדתם לאותה ספרייה שבה נמצא הקוד לדוגמה.
  3. מחליפים את הערך של KEY_FILE_LOCATION בנתיב המתאים אל client_secrets.json שהורדתם.
  4. צריך להחליף את הערך של VIEW_ID. בעזרת סייר החשבונות אפשר לאתר מזהה תצוגה מפורטת.
"""Hello Analytics Reporting API V4."""

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


SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_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,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}],
          'dimensions': [{'name': 'ga:country'}]
        }]
      }
  ).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', []):
      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

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

פתרון בעיות

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