Here's how I did it.
For my application get_report_response() and save_report_data() is being called from within a loop that is going through multiple profile ids.
report_response = get_report_response(report_request, feed_log_file_path)
save_report_data(report_response, profile_id, feed_data_file_path)
def get_report_response(report_request, feed_log_file_path):
report_response = _analytics_reporting_service.reports().batchGet(body=report_request,quotaUser=QUOTA_USER,prettyPrint=True).execute()
Log("report response: {0}".format(report_response), log_file_path=feed_log_file_path)
return report_response
def save_report_data(results, profile_id, feed_data_file_path):
"""Prints out the results. """
for report in results.get('reports', []):
create_header = True
if os.path.isfile(feed_data_file_path):
create_header = False
f = open(feed_data_file_path, 'at', encoding='utf-8')
writer = csv.writer(f, lineterminator='\n')
columnHeader = report.get('columnHeader', {})
dimensionHeaders = columnHeader.get('dimensions', [])
metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
rows = report.get('data', {}).get('rows', [])
temp_header_row = ["profile_id"]
header_row = []
header_row.extend(dimensionHeaders)
header_row.extend([mh['name'] for mh in metricHeaders])
temp_header_row.extend(header_row)
if create_header:
writer.writerow(temp_header_row)
for row in rows:
dimensions_data = row.get('dimensions', [])
metrics_data = [m['values'] for m in row.get('metrics', [])][0]
temp_data_row = [profile_id]
data_row = []
data_row.extend(dimensions_data)
data_row.extend(metrics_data)
temp_data_row.extend(data_row)
writer.writerow(temp_data_row)
# Close the file.
f.close()