Я просматриваю профили учетных записей Google Analytics, используя API management().goals() и выясняю, какие цели созданы для каждой из них, чтобы знать, для чего я могу получить данные. Получив действительный экземпляр службы, к которому я могу делать запросы, target().list() не жалуется на отсутствующий параметр webPropertyId:
# not including the ServiceAccountCredentials setup here
from apiclient.discovery import build
service = build('analytics', 'v3', http=http)
service.management().goals().list(accountId=account_id, webPropertyId='~all', profileId=profile_id)
Последняя строка завершается с ошибкой:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/analytics/v3/management/accounts/nnnnnnnnn/webproperties/%7Eall/profiles/nnnnnnnnn/goals?alt=json returned "webPropertyId must be specified.">
[Я заменил номера учетных записей/профилей после /accounts/ и /profiles/ на nnnnnnnn для этого поста, для конфиденциальности; у настоящей ошибки там есть номера]
Соответствующий бит: webPropertyId must be specified.
Я определенно указываю параметр webPropertyId
, и если я его удалю, я получу другую ошибку:
TypeError: Missing required parameter "webPropertyId"
Я могу успешно выполнять запросы на получение других метаданных, информации о пользователях и аналитических данных из API управления. Что здесь может быть не так? Я не могу использовать здесь значение ~all
и должен быть более конкретным?
~all
только снизу вверх по дереву. Если вы знаете идентификатор представления (профиля), вам также следует знать родительский веб-ресурс, поскольку представление имеет только одно свойство, поэтому указание~all
для определенного идентификатора представления (профиля) не работает. Было бы лучше спроектировать код с иерархическим деревом, как оно понимается, возможно, сначала вызвавanalytics.accountSummaries.list()
- person Matt   schedule 06.07.2017