Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """A simple example of how to access the Google Analytics API."""
- import os
- import argparse
- from apiclient.discovery import build
- from oauth2client.client import SignedJwtAssertionCredentials
- import httplib2
- from oauth2client import client
- from oauth2client import file
- from oauth2client import tools
- import sys
- import json
- import urllib
- import urllib2
- sys.path.insert(1, '/Library/Python/2.7/site-packages')
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- def get_service(api_name, api_version, scope, key_file_location,
- service_account_email):
- """Get a service that communicates to a Google API.
- Args:
- api_name: The name of the api to connect to.
- api_version: The api version to connect to.
- scope: A list auth scopes to authorize for the application.
- key_file_location: The path to a valid service account p12 key file.
- service_account_email: The service account email address.
- Returns:
- A service that is connected to the specified API.
- """
- # Load the private key associated with the Google service account
- with open(key_file_location) as json_file:
- json_data = json.load(json_file)
- # Get and sign JWT
- credentials = SignedJwtAssertionCredentials(json_data['client_email'], json_data['private_key'], scope)
- http = credentials.authorize(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 this 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 within 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']
- # Use the developer console and replace the values with your
- # service account email and relative location of your key file.
- service_account_email = '[email protected]'
- key_file_location = os.path.join(BASE_DIR, 'analytics/KEY-40f89e410035.json')
- # Authenticate and construct service.
- service = get_service('analytics', 'v3', scope, key_file_location, service_account_email)
- profile = get_first_profile_id(service)
- print_results(get_results(service, profile))
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement