Python with Google Analytics Querying a specific Google Account from Googles scripts
Question: I am quite new to Python and got the following script from Google Analytics
API help. I have got it working and extracting data, however, it specifies to
get the first google account, I have multiple GA accounts and wish to specify
just one. Any help would be great?

Thanks

Craig

    
    
    """A simple example of how to access the Google Analytics API."""
    
    import argparse
    
    from apiclient.discovery import build
    from oauth2client.service_account import ServiceAccountCredentials
    
    import httplib2
    from oauth2client import client
    from oauth2client import file
    from oauth2client import tools
    
    
    
    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.
      """
    
      credentials = ServiceAccountCredentials.from_p12_keyfile(
        service_account_email, key_file_location, scopes=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 = '<Replace with your service account email address.>'
      key_file_location = '<Replace with /path/to/generated/client_secrets.p12>'
    
      # 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()
    


Answer: Comment out (or remove) the following line:

    
    
    profile = get_first_profile_id(service)
    

In the next line enter the id of the profile you want to query manually as the
second parameter

    
    
      print_results(get_results(service, '123456789'))
    

To get the profile id you can either visit the [query explorer](https://ga-
dev-tools.appspot.com/query-explorer/), a nice google tool that allows to ad
hoc queries to you authenticated accounts (i.e. you need to be logged in with
the Google Account that has access to analytics). You can get the profile id
from the "ids" field:

[![enter image description
here](http://i.stack.imgur.com/szMnP.png)](http://i.stack.imgur.com/szMnP.png)

Or got to your analytics account, and in the reports look at the url. It will
look like

    
    
    https://analytics.google.com/analytics/web/?authuser=0#report/defaultid/a1111110w65439246p123456789/
    

The profile id is at the end of the url (after the "p" character).

