2017-07-06 3 views
1

Je parcourt les profils de compte Google Analytics à l'aide de l'API management(). Goals() et découvre les objectifs créés chacun, pour savoir ce que je peux extraire des données. . Après avoir obtenu une instance de service valide, je peux faire des demandes contre, les objectifs() liste() ne se plaignant de paramètre webPropertyId manquant:GA: Liste des objectifs API: webPropertyId = '~ all' requête renvoie http 400 "webPropertyId" doit être spécifié

# 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) 

La dernière ligne échoue avec:

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."> 

[I remplacé les numéros de compte/profil après/comptes/et/profiles/avec nnnnnnnnn pour ce poste, pour la vie privée; l'erreur réelle a des chiffres là-bas]

Le bit relevent: webPropertyId must be specified.

Je fournir le paramètre que webPropertyId, et si je l'enlève-je obtenir une autre erreur: TypeError: Paramètre obligatoire manquant « webPropertyId »

Je peux réussir à faire des requêtes pour extraire d'autres métadonnées et informations d'utilisateur et données analytiques de l'API de gestion. Qu'est-ce qui pourrait mal tourner ici? Je ne suis pas autorisé à utiliser la valeur ~all ici et doit être plus spécifique? Je suis assez nouveau à leur API d'analyse.

+0

Le compte, la propriété Web et la vue (profil) peuvent être considérés comme un arbre hiérarchique. Un compte a de nombreuses propriétés Web, une propriété Web a plusieurs vues (profils). Il est donc logique d'utiliser le qualificatif '~ all 'du bas de l'arbre. Si vous connaissez un ID de vue (profil), vous devez également connaître la propriété Web parent, car une vue n'a qu'une seule propriété, ce qui signifie que '~ all 'pour une vue spécifique (profil) ne fonctionne pas. Il serait préférable de concevoir le code avec l'arborescence hiérarchique tel que compris, peut-être en appelant d'abord 'analytics.accountSummaries.list()' – Matt

Répondre

1

Travaux:

GET https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles/~all/goals 

travaille également

GET https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles/73835159/goals 

ne fonctionne pas.

GET https://www.googleapis.com/analytics/v3/management/accounts/41967536/webproperties/~all/profiles/73835159/goals 

Réponse:

{"error":{"errors":[{"domain":"global","reason":"badRequest","message":"webPropertyId must be specified."}],"code":400,"message":"webPropertyId must be specified."}} 

Je vais appeler cela un rapport de bogue bug Goals with ~all results in an error déposé, je vais l'amener avec l'équipe la semaine prochaine.

+2

Je n'appellerais pas cela un bug, mais cela fonctionne comme prévu. Le qualificatif '~ all 'n'a de sens que pour utiliser de bas en haut. Si vous connaissez un ID de vue, il existe un seul et unique ID de propriété Web. Le '~ tout 'est simplement du sucre syntaxique; Je conseillerais d'utiliser 'accountSummaries.list' comme premier appel d'API, puis j'utiliserais cette structure hiérarchique comme étant connue. Cela vous fera également gagner du temps car '~ tout 'peut devenir plus cher si l'utilisateur a de nombreux comptes avec de nombreuses propriétés et de nombreuses vues. – Matt