Как я могу получить более двух значений диапазона дат из GA-api-v4? - PullRequest
0 голосов
/ 28 января 2019

Я нахожу уникальное значение пользователей каждого дня в широком диапазоне дат.По определению пользователей 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)Как мне удобно сделать такой же результат?

...