2014-07-22 3 views
1

J'utilise google-api-ruby-client pour obtenir une réponse de l'API google analytics, ce qui est un succès, la seule chose que je suis un peu confondu avec si l'objet de réponse, je aimerait savoir comment naviguer dans les clés spécifiques et leurs valeurs ou même analyser la réponse pour la rendre plus compréhensible ..Réponse JSON de google analytics api

est inférieur à ce que je crois est la partie pertinente de la réponse JSON

"{\"kind\":\"analytics#gaData\",\"id\":\"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:88893966&dimensions=ga:pagePath&metrics=ga:pageviews&filters=ga:pagePath%3D%3D/&start-date=2014-01-01&end-date=2014-07-22\",\"query\":{\"start-date\":\"2014-01-01\",\"end-date\":\"2014-07-22\",\"ids\":\"ga:88893966\",\"dimensions\":\"ga:pagePath\",\"metrics\":[\"ga:pageviews\"],\"filters\":\"ga:pagePath==/\",\"start-index\":1,\"max-results\":1000},\"itemsPerPage\":1000,\"totalResults\":1,\"selfLink\":\"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:88893966&dimensions=ga:pagePath&metrics=ga:pageviews&filters=ga:pagePath%3D%3D/&start-date=2014-01-01&end-date=2014-07-22\",\"profileInfo\":{\"profileId\":\"88893966\",\"accountId\":\"53082810\",\"webPropertyId\":\"UA-53082810-1\",\"internalWebPropertyId\":\"85713348\",\"profileName\":\"All Web Site Data\",\"tableId\":\"ga:88893966\"},\"containsSampledData\":false,\"columnHeaders\":[{\"name\":\"ga:pagePath\",\"columnType\":\"DIMENSION\",\"dataType\":\"STRING\"},{\"name\":\"ga:pageviews\",\"columnType\":\"METRIC\",\"dataType\":\"INTEGER\"}],\"totalsForAllResults\":{\"ga:pageviews\":\"8\"},\"rows\":[[\"/\",\"8\"]]}" 

qui est obtenu à partir de

# make queries 
result = client.execute(:api_method => api_method, :parameters => { 
    'ids'  => PROFILE, 
    'start-date' => Date.new(2014,1,1).to_s, 
    'end-date' => Date.today.to_s, 
    'dimensions' => 'ga:pagePath', 
    'metrics' => 'ga:pageviews', 
    'filters' => 'ga:pagePath==/' 
}) 

puts ap(result) 

aussi quand je fais

puts ap(result.data.rows.inspect) 
#returns 
"[[\"/\", \"8\"]]" 

et lorsque je tente

response = JSON.parse(result.data.totalsForAllResults) 
puts ap(response) 
# returns error 
TypeError: no implicit conversion of #<Class:0x00000001950550> into String 

Je me demande comment je peux formater la réponse sans antislashs et comment je dirais obtenir les pages vues au total?

Toute aide appréciée

Merci

Répondre

0

Votre syntaxe est désactivée.

Si result est simplement une chaîne qui est un objet JSON, qu'il ressemble à ci-dessus, ce que vous voulez est:

response = JSON.parse(result) 
ap response["totalsForAllResults"]["ga:pageviews"] 

regardant google-api-ruby-client les result.data retourne un objet si analysable à partir du schéma api, un hachage si vous passez le type de support "application/json", ou une chaîne sinon. Vous devez donc déterminer si vous accédez aux données de réponse en tant qu'objet ou hachage. Mon exemple ci-dessus analyse la chaîne brute dans un hachis de rubis.

tl; dr; il y a plusieurs façons d'atteindre les données que vous voulez.

0

Oui, votre syntaxe est désactivée. Ça devrait ressembler a quelque chose comme ca.

https://www.googleapis.com/analytics/v3/data/ga?ids=ga:_____&dimensions=ga:date&metrics=ga:impressions,ga:adClicks,ga:adCost&start-date=2015-10-13&end-date=today 

BaseUrl, identifiant, statistiques, date de début et de fin sont requis. Et n'oubliez pas d'insérer aussi access_token.