Получение пользовательских данных из Google Analytics с помощью Python с помощью userActivity.search

Я пытаюсь получить данные пользователя из 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

Спасибо за помощь!


person the_economist    schedule 09.12.2019    source источник


Ответы (1)


Я только что нашел ответ ...
Вам просто нужно поместить аргументы метода поиска в переменную с именем body. Должно получиться так:

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(
        body = {
            "viewId": VIEW_ID,
            "user": {
                "type": "CLIENT_ID",
                "userId": "310383817.1547668323"
            },
            "dateRange": {
                "startDate": "2019-01-30",
                "endDate": "2019-02-01",
            }
        }
    ).execute()
person the_economist    schedule 09.12.2019
comment
У меня похожая, но другая проблема ... Мне нужно запустить это через цикл for, чтобы получить все данные для разных пользователей для разных сайтов (например, for site in VIEW_id_list: for user in user_id_list: append a dictonary or a list, чтобы собрать все данные для всех пользователей всех сайтов в таблица .... Я ошеломлен сложностью Google Analytics .. Где взять список всех пользователей? - person Llewellyn Hattingh; 21.01.2020
comment
Где взять идентификатор пользователя для передачи в тело запроса? - person 0004; 11.02.2021
comment
т.е. получение clientId not found error - person 0004; 11.02.2021
comment
@ 0004: Я извлекаю идентификатор клиента из самой аналитики Google. Я могу проанализировать все данные в Google Analytics и просмотреть всех пользователей, включая их идентификаторы. Там у меня есть идентификатор клиента. С помощью этого API я просто хотел получить данные и использовать их в Python. - person the_economist; 11.02.2021
comment
@the_economist так чем вы заменили "userId": "310383817.1547668323"? Была ли это ценность, которую вы извлекли из своего Google Analytics API, если да, то где? - person 0004; 11.02.2021
comment
@the_economist документация для захвата client_id отправляет мне в analytics.js документацию developers.google.com/analytics/devguides/collection/, несмотря на то, что он был связан с документами python, над которыми я работал - person 0004; 11.02.2021
comment
@ 0004: Нет, я не извлекал это из Google Analytics API. Я никогда не пытался вытащить идентификатор пользователя с помощью API. Получил, когда зашел в Google Analytics через браузер. - person the_economist; 12.02.2021
comment
@ 0004: существует разница между идентификатором пользователя и идентификатором клиента. Идентификатор пользователя происходит от пользователя / покупателя, использующего магазин нашей компании. Насколько мне известно, clientID - это идентификатор из вашей учетной записи Google. - person the_economist; 12.02.2021