API отчетов Google Anaytics из облачной функции с управляемым ключом Google - PullRequest
1 голос
/ 20 марта 2020

Я пытаюсь использовать API отчетов Google Analytics из облачной функции, чтобы интегрировать отчеты Google Analytics в существующие панели мониторинга Looker моей компании. Я бы предпочел использовать управляемые ключи Google, однако среда выполнения Python3 .7 не позволяет мне использовать функцию google.auth.app_engine.Credentials () для получения учетных данных, необходимых для создания объекта службы. Как я могу создать объект службы аналитики отчетов из облачных функций, используя управляемый ключ Google?

Это код, который я пытался адаптировать из кода, который работал в моей локальной среде (в основном это именно то, что находится в пример из документации по быстрому старту, за исключением учетных данных, метрик и измерений.В конечном итоге я собираюсь отбросить извлеченные данные в набор данных bigQuery, но сейчас я просто использую функции печати для тестирования приложения:

from apiclient.discovery import build
from google.auth import app_engine


VIEW_ID = '**********'


def initialize_analyticsreporting():
  #Retrive credentials from app enging default service account   
  credentials = app_engine.Credentials()


  # Build the service object.
  analytics = build('analyticsreporting', 'v4', credentials=credentials)

  return analytics


def get_report(analytics):

"""
    Query the Google Analytics Reporting API to return Impressions, clicks, cost and conversions
    per day from either Google Ads, SA360, DV360 or Campaign manager
"""
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '2020-03-19', 'endDate': '2020-03-19'}],
          'metrics': [
                        # Google Ads metrics

                        # {'expression': 'ga:impressions'},
                        # {'expression': 'ga:adClicks'},
                        # {'expression': 'ga:cost'},
                        # {'expression': 'ga:costPerTransaction'},

                        # Campaign Manager Metrics

                        # {'expression': 'ga:dcmImpressions'},
                        # {'expression': 'ga:dcmClicks'},
                        # {'expression': 'ga:dcmCost'},
                        # {'expression': 'ga:dcmFloodlightQuantity'}

                        # DV360 Metrics

                        {'expression': 'ga:dbmImpressions'},
                        {'expression': 'ga:dbmClicks'},
                        {'expression': 'ga:dbmCost'},
                        # {'expression': 'ga:dbmConversions'}


                        # SA360 Metrics

                        # {'expression': 'ga:dsImpressions'},
                        # {'expression': 'ga:dsClicks'},
                        # {'expression': 'ga:dsCost'},
                        # {'expression': 'ga:uniquePurchases'}


                        ],
          'dimensions': [{'name': 'ga:date'}]
        }]
      }
  ).execute()


def print_response(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)


def main(request):
  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

...