title: Google Analytics API in Python
body: <p>I am trying to Query the Google Analytics API using Python. I've followed the example on the documentation. (I've made very minor changes to help me debug the problems I'm having). I keep getting a 'NoneType' object has no attribute '<strong>__<em>getitem</em>__</strong>'  which I don't seem to be able to explain. I'm just following the Example in the Documentation offered by Google which tries to get ga:visits data for the 03/03/2012.</p>
  
  <p>The code I'm running is:</p>
  
  <pre><code>#!/usr/bin/python
  # -*- coding: utf-8 -*-
  
  import sys
  
  # import the Auth Helper class
  import hello_analytics_api_v3_auth
  
  from apiclient.errors import HttpError
  from oauth2client.client import AccessTokenRefreshError
  
  def main(argv):
    # Step 1. Get an analytics service object.
    print "I got here twice"
    service = hello_analytics_api_v3_auth.initialize_service()
  
    try:
      # Step 2. Get the user's first profile ID.
      profile_id = get_first_profile_id(service)
      print profile_id
  
      if profile_id:
        # Step 3. Query the Core Reporting API.
        results = get_results(service, profile_id)
        print "I got the results"
  
        # Step 4. Output the results.
        print_results(results)
        print "I printed the results"
  
    except TypeError, error:
      # Handle errors in constructing a query.
      print ('There was an error in constructing your query : %s' % error)
  
    except HttpError, error:
      # Handle API errors.
      print ('Arg, there was an API error : %s : %s' %
             (error.resp.status, error._get_reason()))
  
    except AccessTokenRefreshError:
      # Handle Auth errors.
      print ('The credentials have been revoked or expired, please re-run '
             'the application to re-authorize')
  
  def get_first_profile_id(service):
    # Get a list of all Google Analytics accounts for this user
    print "I am trying to get first profile ID"
    accounts = service.management().accounts().list().execute()
  
    if accounts.get('items'):
      # Get the first Google Analytics account
      firstAccountId = accounts.get('items')[0].get('id')
  
      # Get a list of all the Web Properties for the first account
      webproperties = service.management().webproperties().list(accountId=firstAccountId).execute()
  
      if webproperties.get('items'):
        # Get the first Web Property ID
        firstWebpropertyId = webproperties.get('items')[0].get('id')
  
        # Get a list of all Profiles for the first Web Property of the first Account
        profiles = service.management().profiles().list(
            accountId=firstAccountId,
            webPropertyId=firstWebpropertyId).execute()
  
        if profiles.get('items'):
          # return the first 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
    return service.data().ga().get(
        ids='ga:' + profile_id,
        start_date='2012-03-03',
        ##The start date dates range is hard coded here
        ##We have to change this so it becomes an input parameter
        end_date='2012-03-03',
        ##The end date is also hard coded in
        ##Change this to be an input parameter
        ##If you run out of ideas, read the start date off a txt file
        ##And then have the user change the text file before running
        ##the program
        metrics='ga:visits').execute()
  
  def print_results(results):
    # Print data nicely for the user.
    print results
    if results:
      print 'First Profile: %s' % results.get('profileInfo').get('profileName')
      print 'Total Visits: %s' % results.get('rows')[0][0]
  
    else:
      print 'No results found'
  
  ##if __name__ == '__main__':
  main(sys.argv)
  </code></pre>
  
  <p>Which is returning the following results:</p>
  
  <pre><code>I got here twice
  I am trying to get first profile ID
  REDACT PROFILE ID
  I got the results
  {u'kind': u'analytics#gaData', u'containsSampledData': False}, u'itemsPerPage': 1000, u'totalsForAllResults': {u'ga:visits': u'0'}, u'columnHeaders': [{u'dataType': u'INTEGER', u'columnType': u'METRIC', u'name': u'ga:visits'}], u'query': {u'max-results': 1000, u'start-date': u'2012-03-03', u'start-index': 1, u'ids': u'ga:REDACTED', u'metrics': [u'ga:visits'], u'end-date': u'2012-03-03'}, u'totalResults': 0, u'id': u'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:4159539&amp;metrics=ga:visits&amp;start-date=2012-03-03&amp;end-date=2012-03-03&amp;start-index=1&amp;max-results=1000', u'selfLink': u'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:4159539&amp;metrics=ga:visits&amp;start-date=2012-03-03&amp;end-date=2012-03-03&amp;start-index=1&amp;max-results=1000'}
  First Profile: H - REDACTED
  There was an error in constructing your query : 'NoneType' object has no attribute '__getitem__'
  </code></pre>
  
  <p>Can anyone help us by explaining what's going wrong and showing us what we need to fix? :)</p>
  
  <p>Thanks</p>