0

I don't know much about python and found an example that would serve my purpose with some modifications, currently trying to parse some data from a GET request response and I keep getting this error:

"activity['parameters']['initValue']))
TypeError: list indices must be integers or slices, not strTypeError: list indices must be integers or slices, not str"

JSON response looks like this:

{'kind': 'admin#reports#usageReports', 'etag': '"xxxxxxxxx/xxxxxxxxxxxx"', 'usageReports': [{'kind': 'admin#reports#usageReport', 'date': '2019-09-01', 'etag': '"xxxxxxxxx/xxxxxxxx"', 'entity': {'type': 'CUSTOMER', 'customerId': 'xxxxxxxx'}, 'parameters': [{'name': 'gmail:num_30day_active_users', 'intValue': '1234'}]}]}

Python Code:

    result = service.customerUsageReports().get(date='2019-09-01', parameters='gmail:num_30day_active_users').execute()
    
    results = result.get('usageReports', [])
    if not results:
         print('No data found.')
    else:
        print('Usage:')
        for activity in results:
            print(u'{0}: {1}'.format(activity['parameters'],
                activity['parameters']['intValue']))

What needs to be changed to make it work? Thank you!

General Grievance
  • 4,555
  • 31
  • 31
  • 45
pyth0nnoOb
  • 13
  • 3

1 Answers1

1

from the data you provide, the value in parameters is a list of dict

'parameters': [{'name': 'gmail:num_30day_active_users',
    'intValue': '1234'}]}  

so you need to iterate all the items in list

result = service.customerUsageReports().get(date='2019-09-01', parameters='gmail:num_30day_active_users').execute()

results = result.get('usageReports', [])
if not results:
     print('No data found.')
else:
    print('Usage:')
    for activity in results:
       for line in activity['parameters']:
          print(u'{0}: {1}'.format(activity['parameters'],
            line['initValue']))
galaxyan
  • 5,944
  • 2
  • 19
  • 43