במדריך הזה מפורטים השלבים הנדרשים כדי לגשת לחשבון Google Analytics, ליצור שאילתות בממשקי API של Analytics, לטפל בתשובות ל-API ולפלט את התוצאות. במדריך הזה נעשה שימוש ב-Core Reporting API v3.0, ב-Management API v3.0 וב-OAuth2.0.
שלב 1: מפעילים את Analytics API
כדי להתחיל להשתמש ב-Google Analytics API, צריך קודם להשתמש בכלי ההגדרה, שכולל הנחיות ליצירת פרויקט ב-Google API Console, להפעלת ה-API וליצירת פרטי כניסה.
יצירת מזהה לקוח
מדף פרטי הכניסה:
- לוחצים על יצירת פרטי כניסה ובוחרים באפשרות מזהה לקוח OAuth.
- בחר אחר עבור סוג אפליקציה.
- נותנים שם לפרטי הכניסה.
- לוחצים על Create.
בוחרים את פרטי הכניסה שיצרת הרגע ולוחצים על הורדת JSON. שומרים את הקובץ שהורדתם
client_secrets.json
. צריך אותו מאוחר יותר במדריך.
שלב 2: מתקינים את ספריית הלקוחות של Google
אפשר להשתמש במנהל החבילות או להוריד ולהתקין את ספריית הלקוחות של Python באופן ידני:
תמונה בתוך תמונה (PIP)
אפשר להשתמש ב-pip, הכלי המומלץ להתקנת חבילות Python:
sudo pip install --upgrade google-api-python-client
כלי הגדרה
צריך להשתמש בכלי easy_Install שכלול בחבילה של setuptools:
sudo easy_install --upgrade google-api-python-client
התקנה ידנית
מורידים את ספריית הלקוחות האחרונה ל-python, פורסים את הקוד ומפעילים אותו:
sudo python setup.py install
ייתכן שיהיה עליך להפעיל את הפקודה עם הרשאות משתמש-על (sudo
)
כדי להתקין אותה ב-Python המערכת.
שלב 3: הגדרת הדוגמה
צריך ליצור קובץ יחיד בשם HelloAnalytics.py
, שיכיל את קוד הדוגמה הנתון.
- מעתיקים או
מורידים את קוד המקור הבא אל
HelloAnalytics.py
. - מעבירים את
client_secrets.json
שהורדתם בעבר באותה ספרייה שבה נמצא הקוד לדוגמה.
"""A simple example of how to access the Google Analytics API.""" import argparse from apiclient.discovery import build import httplib2 from oauth2client import client from oauth2client import file from oauth2client import tools def get_service(api_name, api_version, scope, client_secrets_path): """Get a service that communicates to a Google API. Args: api_name: string The name of the api to connect to. api_version: string The api version to connect to. scope: A list of strings representing the auth scopes to authorize for the connection. client_secrets_path: string A path to a valid client secrets file. Returns: A service that is connected to the specified API. """ # 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=scope, 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(api_name + '.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. service = build(api_name, api_version, http=http) return service def get_first_profile_id(service): # Use the Analytics service object to get the first profile id. # Get a list of all Google Analytics accounts for the authorized user. accounts = service.management().accounts().list().execute() if accounts.get('items'): # Get the first Google Analytics account. account = accounts.get('items')[0].get('id') # Get a list of all the properties for the first account. properties = service.management().webproperties().list( accountId=account).execute() if properties.get('items'): # Get the first property id. property = properties.get('items')[0].get('id') # Get a list of all views (profiles) for the first property. profiles = service.management().profiles().list( accountId=account, webPropertyId=property).execute() if profiles.get('items'): # return the first view (profile) id. return profiles.get('items')[0].get('id') return None def get_results(service, profile_id): # Use the Analytics Service Object to query the Core Reporting API # for the number of sessions in the past seven days. return service.data().ga().get( ids='ga:' + profile_id, start_date='7daysAgo', end_date='today', metrics='ga:sessions').execute() def print_results(results): # Print data nicely for the user. if results: print 'View (Profile): %s' % results.get('profileInfo').get('profileName') print 'Total Sessions: %s' % results.get('rows')[0][0] else: print 'No results found' def main(): # Define the auth scopes to request. scope = ['https://www.googleapis.com/auth/analytics.readonly'] # Authenticate and construct service. service = get_service('analytics', 'v3', scope, 'client_secrets.json') profile = get_first_profile_id(service) print_results(get_results(service, profile)) if __name__ == '__main__': main()
שלב 4: הרצת הדגימה
לאחר הפעלת ה-API של Analytics, התקנת ספריית הלקוחות של Google APIs ב-Python, והגדרת קוד המקור לדוגמה עבור הדגימה.
הרצת הדגימה באמצעות:
python HelloAnalytics.py
- האפליקציה תטען את דף ההרשאה בדפדפן.
- אם עדיין לא התחברת לחשבון Google, תתבקשו להתחבר. אם יש לך כמה חשבונות Google, נבקש ממך לבחור חשבון אחד שישמש להרשאה.
לאחר סיום השלבים האלה, הדגימה מפיקה את השם של התצוגה המפורטת (הפרופיל) הראשונה של המשתמש המורשה ב-Google Analytics ואת מספר הביקורים בשבעת הימים האחרונים.
באמצעות אובייקט השירות המורשה של Analytics אפשר עכשיו להריץ דוגמאות קוד שנמצאות במסמכי התיעוד של Management API. לדוגמה, אפשר לנסות לשנות את הקוד כדי להשתמש בשיטה accountSummaries.list.
פתרון בעיות
attributeError: 'Module_six_Moves_urllib_parse' לאובייקט אין מאפיין 'urlparse'
השגיאה הזו יכולה להתרחש ב-Mac OSX, שבה התקנת ברירת המחדל של "six"
המודול (תלות של הספרייה הזו) נטענת לפניה. כדי לפתור את הבעיה, צריך להוסיף מיקום התקנה pip&33 של משתנה סביבת המערכת PYTHONPATH
:
-
קובעים את מיקום ההתקנה של pip' באמצעות הפקודה הבאה:
pip show six | grep "Location:" | cut -d " " -f2
-
יש להוסיף את השורה הבאה לקובץ
~/.bashrc
ולהחליף את<pip_install_path>
בערך שנקבע למעלה:export PYTHONPATH=$PYTHONPATH:<pip_install_path>
-
יש לטעון מחדש את הקובץ
~/.bashrc
בכל חלון מסוף פתוח באמצעות הפקודה הבאה:source ~/.bashrc