Я пытаюсь использовать 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)