|
@@ -1,12 +1,33 @@
|
|
|
"""Hello Analytics Reporting API V4."""
|
|
|
-
|
|
|
+#!/usr/bin/python3
|
|
|
+import sys
|
|
|
+import codecs
|
|
|
+import traceback
|
|
|
+import requests
|
|
|
+import re
|
|
|
+import pandas as pd
|
|
|
+import random
|
|
|
+import urllib
|
|
|
+import dataset
|
|
|
+import json
|
|
|
+import gspread
|
|
|
+import datetime
|
|
|
+from gspread_pandas import Spread, Client
|
|
|
+from oauth2client.service_account import ServiceAccountCredentials
|
|
|
+import os
|
|
|
+import threading
|
|
|
from apiclient.discovery import build
|
|
|
from oauth2client.service_account import ServiceAccountCredentials
|
|
|
+import dataset
|
|
|
+
|
|
|
+db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
|
|
|
+db.query('delete from hhh_weekly_report')
|
|
|
|
|
|
+table=db['hhh_weekly_report']
|
|
|
|
|
|
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
|
|
|
-KEY_FILE_LOCATION = ''
|
|
|
-VIEW_ID = '<REPLACE_WITH_VIEW_ID>'
|
|
|
+KEY_FILE_LOCATION = 'c:\\keys\\choozmo-ga-beee24b7a4c1.json'
|
|
|
+VIEW_ID = '188916214'
|
|
|
|
|
|
|
|
|
def initialize_analyticsreporting():
|
|
@@ -24,7 +45,7 @@ def initialize_analyticsreporting():
|
|
|
return analytics
|
|
|
|
|
|
|
|
|
-def get_report(analytics):
|
|
|
+def get_report(analytics,body):
|
|
|
"""Queries the Analytics Reporting API V4.
|
|
|
|
|
|
Args:
|
|
@@ -34,13 +55,18 @@ def get_report(analytics):
|
|
|
"""
|
|
|
return analytics.reports().batchGet(
|
|
|
body={
|
|
|
- 'reportRequests': [
|
|
|
- {
|
|
|
- 'viewId': VIEW_ID,
|
|
|
- 'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
|
|
|
- 'metrics': [{'expression': 'ga:sessions'}],
|
|
|
- 'dimensions': [{'name': 'ga:country'}]
|
|
|
- }]
|
|
|
+ 'reportRequests':body
|
|
|
+ # [
|
|
|
+ #{
|
|
|
+# 'viewId': VIEW_ID,
|
|
|
+# 'dateRanges': [{'startDate': '14daysAgo', 'endDate': 'today'}],
|
|
|
+# 'dateRanges': [{'startDate': '2021-05-30', 'endDate': '2021-06-05'}],
|
|
|
+
|
|
|
+# 'metrics': [{'expression': 'ga:users'}],
|
|
|
+# 'dimensions': [{'name': 'ga:sourceMedium'}]
|
|
|
+# 'dimensions': [{'name': 'ga:date'},{'name': 'ga:sourceMedium'}]
|
|
|
+
|
|
|
+# }]
|
|
|
}
|
|
|
).execute()
|
|
|
|
|
@@ -51,6 +77,7 @@ def print_response(response):
|
|
|
Args:
|
|
|
response: An Analytics Reporting API V4 response.
|
|
|
"""
|
|
|
+ result=[]
|
|
|
for report in response.get('reports', []):
|
|
|
columnHeader = report.get('columnHeader', {})
|
|
|
dimensionHeaders = columnHeader.get('dimensions', [])
|
|
@@ -59,20 +86,53 @@ def print_response(response):
|
|
|
for row in report.get('data', {}).get('rows', []):
|
|
|
dimensions = row.get('dimensions', [])
|
|
|
dateRangeValues = row.get('metrics', [])
|
|
|
+ ga_dict={}
|
|
|
|
|
|
for header, dimension in zip(dimensionHeaders, dimensions):
|
|
|
print(header + ': ', dimension)
|
|
|
-
|
|
|
+ ga_dict[header]=dimension
|
|
|
+
|
|
|
for i, values in enumerate(dateRangeValues):
|
|
|
print('Date range:', str(i))
|
|
|
for metricHeader, value in zip(metricHeaders, values.get('values')):
|
|
|
- print(metricHeader.get('name') + ':', value)
|
|
|
-
|
|
|
+ ga_dict[metricHeader.get('name')]=value
|
|
|
+# print(metricHeader.get('name') + ':', value)
|
|
|
+ result.append(ga_dict)
|
|
|
+ return result
|
|
|
+# print(ga_dict)
|
|
|
|
|
|
def main():
|
|
|
analytics = initialize_analyticsreporting()
|
|
|
- response = get_report(analytics)
|
|
|
- print_response(response)
|
|
|
+#(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)
|
|
|
+
|
|
|
+ body=[{ 'viewId': VIEW_ID,
|
|
|
+ 'dateRanges': [{'startDate': '2021-05-24', 'endDate': '2021-06-10'}],
|
|
|
+# 'filtersExpression': 'ga:sourceMedium=~(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)',
|
|
|
+ 'filtersExpression': 'ga:sourceMedium=~(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)',
|
|
|
+ 'metrics': [{'expression': 'ga:users'},{'expression': 'ga:newusers'},{'expression': 'ga:sessions'},{'expression': 'ga:pageviews'},{'expression': 'ga:bounceRate'},{'expression': 'ga:pageviewsPerSession'}],
|
|
|
+ 'dimensions': [{'name': 'ga:date'},{'name': 'ga:isoWeek'}]
|
|
|
+ }]
|
|
|
+
|
|
|
+ response = get_report(analytics,body)
|
|
|
+ ga_dict=print_response(response)
|
|
|
+ for elmt in ga_dict:
|
|
|
+ elmt['category']='social'
|
|
|
+ table.insert(elmt)
|
|
|
+
|
|
|
+ body=[{ 'viewId': VIEW_ID,
|
|
|
+ 'dateRanges': [{'startDate': '2021-05-24', 'endDate': '2021-06-10'}],
|
|
|
+# 'filtersExpression': 'ga:sourceMedium=~(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)',
|
|
|
+ 'filtersExpression': 'ga:sourceMedium!~(FB_|facebook|IG_|LINE_|LINEMP_|qsear.ch)',
|
|
|
+ 'metrics': [{'expression': 'ga:users'},{'expression': 'ga:newusers'},{'expression': 'ga:sessions'},{'expression': 'ga:pageviews'},{'expression': 'ga:bounceRate'},{'expression': 'ga:pageviewsPerSession'}],
|
|
|
+ 'dimensions': [{'name': 'ga:date'},{'name': 'ga:isoWeek'}]
|
|
|
+ }]
|
|
|
+
|
|
|
+ response = get_report(analytics,body)
|
|
|
+ ga_dict=print_response(response)
|
|
|
+ for elmt in ga_dict:
|
|
|
+ elmt['category']='organic'
|
|
|
+ table.insert(elmt)
|
|
|
+
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
main()
|