Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from apiclient.discovery import build
- from oauth2client.service_account import ServiceAccountCredentials
- import pandas as pd
- from pandas.io.json import json_normalize
- SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
- KEY_FILE_LOCATION = './key.json'
- VIEW_ID = #secret
- def initialize_analyticsreporting():
- credentials = ServiceAccountCredentials.from_json_keyfile_name(
- KEY_FILE_LOCATION, SCOPES)
- # Build the service object.
- analytics = build('analyticsreporting', 'v4', credentials=credentials)
- return analytics
- def get_report(analytics):
- return analytics.reports().batchGet(
- body={
- 'reportRequests': [
- {
- 'viewId': VIEW_ID,
- 'dateRanges': [{'startDate': '2019-09-28', 'endDate': 'today'}],
- 'metrics': [{'expression': 'ga:sessions'}, {'expression': 'ga:pageViews'}],
- 'dimensions': [
- {'name': 'ga:date'},
- {'name': 'ga:pagePath'},
- {'name': 'ga:channelGrouping'},
- {'name': 'ga:medium'},
- {'name': 'ga:source'},
- {'name': 'ga:referralPath'},
- {'name': 'ga:fullReferrer'}
- ]
- }
- ]
- }
- ).execute()
- def parse_data(response):
- reports = response['reports'][0]
- columnHeader = reports['columnHeader']['dimensions']
- metricHeader = reports['columnHeader']['metricHeader']['metricHeaderEntries']
- columns = columnHeader
- for metric in metricHeader:
- columns.append(metric['name'])
- data = json_normalize(reports['data']['rows'])
- data_dimensions = pd.DataFrame(data['dimensions'].tolist())
- data_metrics = pd.DataFrame(data['metrics'].tolist())
- data_metrics = data_metrics.applymap(lambda x: x['values'])
- data_metrics = pd.DataFrame(data_metrics[0].tolist())
- result = pd.concat([data_dimensions, data_metrics], axis=1, ignore_index=True)
- return result
- def main():
- analytics = initialize_analyticsreporting()
- response = get_report(analytics)
- parse_data(response).to_csv('file.csv', encoding = 'utf-8')
- if __name__ == '__main__':
- main()
- """
- expected result
- Referral Path Full Referrer Source Medium Page Date Channel Grouping Sessions Pageviews
- (not set) (direct) (direct) (none) / Sep 29, 2019 Direct 0 5
- (not set) (direct) (direct) (none) / Sep 30, 2019 Direct 6 8
- current result [I want headers to change like expected]
- 0 1 2 3 4 5 6 7 8
- 0 20190928 / Organic Search organic google (not set) google 4 6
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement