Я нахожу уникальное значение пользователей каждого дня в широком диапазоне дат.По определению пользователей GA, при выборе широкого диапазона дат будут затронуты уникальные пользователи.Например, поиск пользователя «2018-01-01» в диапазоне дат между 2018-01-01 и 2018-12-31, вывод 10000, но поиск только между «2018-01-01» и «2018-01-01»11000.
Я обнаружил, что на GA-api-v4 у нас может быть диапазон muti-date, но предоставляется только максимум 2 date-rage.Я надеюсь, что смогу получить результат в широком диапазоне дат, например:
class GA(object):
def __init__(self):
#GA Setting
self.SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
self.KEY_FILE_LOCATION = 'xxx.json'
self.service = self.initialize_analyticsreporting()
def initialize_analyticsreporting(self):
"""Initializes an Analytics Reporting API V4 service object.
Returns:
An authorized Analytics Reporting API V4 service object.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
self.KEY_FILE_LOCATION, self.SCOPES)
# Build the service object.
analytics = build('analyticsreporting', 'v4', credentials=credentials)
return analytics
def get_user(self):
"""Queries the Analytics Reporting API V4.
Args:
analytics: An authorized Analytics Reporting API V4 service object.
Returns:
The Analytics Reporting API V4 response.
"""
analytics = self.initialize_analyticsreporting()
import datetime, calendar
year = 2018
month = 1
num_days = calendar.monthrange(year, month)[1]
days = [datetime.date(year, month, day) for day in range(1, num_days+1)]
dates = [datetime.datetime.strftime(x, '%Y-%m-%d') for x in days]
return analytics.reports().batchGet(
body={
'reportRequests': [
{
'viewId': 'ga:12345678',
'dateRanges': [{'startDate': date, 'endDate': date} for date in dates]],
'metrics': [{'expression': "ga:users", 'alias' :'users'}],
'dimensions': [{'name': 'ga:date'}]]
}
]
}
).execute()
def print_response(self, response):
"""Parses and prints the Analytics Reporting API V4 response.
Args:
response: An Analytics Reporting API V4 response.
"""
for report in response.get('reports', []):
columnHeader = report.get('columnHeader', {})
dimensionHeaders = columnHeader.get('dimensions', [])
metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
for row in report.get('data', {}).get('rows', []):
dimensions = row.get('dimensions', [])
dateRangeValues = row.get('metrics', [])
for header, dimension in zip(dimensionHeaders, dimensions):
print (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)
Чтобы получить результат:
get = GA()
response = get.user()
get.print_response(response)
Я хочу, чтобы избежать повторения в течение длительного времени для повторения службы Connect GA)Как мне удобно сделать такой же результат?