Я пытаюсь получить данные пользователя из Google Analytics, используя следующий API Google Python:
https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py.
В показанном примере функция get_report выглядит так:
def get_report(analytics):
"""Queries the Analytics Reporting API V4.
Args:
analytics: An authorized Analytics Reporting API V4 service object.
Returns:
The Analytics Reporting API V4 response.
"""
return analytics.reports().batchGet(
body={
'reportRequests': [
{
'viewId': VIEW_ID,
'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
'metrics': [{'expression': 'ga:sessions'}],
'dimensions': [{'name': 'ga:country'}]
}]
}
).execute()
Этот синтаксис работает хорошо, но я думаю, что для получения пользовательских данных мне нужно придерживаться следующего руководства:
https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/userActivity/search
Чтобы было понятнее, я хотел запустить пример отсюда:
https://developers.google.com/analytics/devguides/reporting/core/v4/user-reporting
Пример выглядит так:
{
"viewId": "9999999",
"user": {
"type": "CLIENT_ID",
"userId": "1034600000.76425000000"
},
"dateRange": {
"startDate": "2018-01-01",
"endDate": "2018-12-31",
}
}
Но в этом примере не говорится, как определить функцию get_report сверху. Насколько я понимаю, аргумент «анализ», используемый в «get_reports», имеет метод или класс под названием «userActivity», который у него есть. Но, согласно второй ссылке сверху, у него также должен быть метод под названием «поиск», которого у него нет! Итак, как мне получить / получить доступ к методу «поиск»? Должен ли он быть инициализирован при инициализации класса userActivity?
На данный момент мой синтаксис выглядит так:
def get_report(analytics):
"""Queries the Analytics Reporting API V4.
Args:
analytics: An authorized Analytics Reporting API V4 service object.
Returns:
The Analytics Reporting API V4 response.
"""
return analytics.userActivity().search(
{
"viewId": VIEW_ID,
"user": {
"type": "CLIENT_ID",
"userId": "310383817.1547668323"
},
"dateRange": {
"startDate": "2019-01-30",
"endDate": "2019-02-01",
}
}
).execute()
Но этот синтаксис не работает! В сообщении об ошибке говорится:
method () принимает 1 позиционный аргумент, но было дано 2
Спасибо за помощь!