Domanda

Sono nuovo di zecca in Python e sto cercando di scrivere un'estensione per un'app che importa informazioni GA e le analizza in MySQL. C'è una quantità sparsa di informazioni sull'argomento. Google Docs sembra avere solo esempi in JS e Java ...

... Sono arrivato al punto in cui il mio utente può autenticarsi in GA usando SubAuth. Quel codice è qui:

import gdata.service
import gdata.analytics  
from django import http
from django import shortcuts
from django.shortcuts import render_to_response

def authorize(request):
    next = 'http://localhost:8000/authconfirm'
    scope = 'https://www.google.com/analytics/feeds'
    secure = False  # set secure=True to request secure AuthSub tokens
    session = False
    auth_sub_url = gdata.service.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session)
    return http.HttpResponseRedirect(auth_sub_url)

Quindi, il passo successivo è ottenere i dati. Ho trovato questa libreria: (attenzione, l'interfaccia utente è offensiva) http://gdata-python-client.googlecode.com/svn/trunk/pydocs/gdata.analytics.html Tuttavia, ho trovato difficoltà a navigare. Sembra che dovrei essere gdata.analytics.AnalyticsDataEntry.getDataEntry (), ma non sono sicuro di cosa mi stia chiedendo di passarlo.

Mi piacerebbe una spinta nella giusta direzione. Sento di aver esaurito Google cercando un esempio funzionante.

Grazie !!

EDIT: sono andato più lontano, ma il mio problema non è ancora risolto. Il metodo seguente restituisce i dati (credo) .... l'errore che ottengo è: " l'oggetto 'str' non ha alcun attributo '_BecomeChildElement' " Credo di restituire un feed? Tuttavia, non so come approfondirlo. C'è un modo per me di ispezionare questo oggetto?

def auth_confirm(request):
    gdata_service = gdata.service.GDataService('iSample_acctSample_v1.0')
    feedUri='https://www.google.com/analytics/feeds/accounts/default?max-results=50'
    # request feed
    feed = gdata.analytics.AnalyticsDataFeed(feedUri)
    print str(feed)
È stato utile?

Soluzione

Forse questo post può dare una mano. Sembra che non ci siano ancora collegamenti specifici di Analytics, quindi stai lavorando con il gdata generico.

Altri suggerimenti

Uso GA da poco più di un anno ormai e da circa aprile 2009 ho usato i binding python forniti in un pacchetto chiamato python-googleanalytics di Clint Ecker et al. Finora funziona abbastanza bene.

Ecco dove trovarlo: http://github.com/clintecker/python-googleanalytics.

Installalo nel solito modo.

Per usarlo: in primo luogo, in modo da non dover passare manualmente le credenziali di accesso ogni volta che accedi all'API, inseriscile in un file di configurazione in questo modo:

[Credentials]
google_account_email = youraccount@gmail.com
google_account_password = yourpassword

Dai un nome a questo file '.pythongoogleanalytics' e mettilo nella tua home directory.

E da un prompt interattivo digitare:

from googleanalytics import Connection
import datetime
connection = Connection()     # pass in id & pw as strings **if** not in config file
account = connection.get_account(<*your GA profile ID goes here*>)
start_date = datetime.date(2009, 12, 01)
end_data = datetime.date(2009, 12, 13)
# account object does the work, specify what data you want w/ 
# 'metrics' & 'dimensions'; see 'USAGE.md' file for examples
account.get_data(start_date=start_date, end_date=end_date, metrics=['visits'])

Il metodo "get_account" restituirà un elenco di Python (in questo caso, associato alla variabile "account"), che contiene i tuoi dati.

Nell'app sono necessari 3 file. client_secrets.json, analytics.dat e google_auth.py.

Crea un modulo Query.py all'interno dell'app:

class Query(object):
    def __init__(self, startdate, enddate, filter, metrics):
        self.startdate = startdate.strftime('%Y-%m-%d')
        self.enddate = enddate.strftime('%Y-%m-%d')
        self.filter = "ga:medium=" + filter  
        self.metrics = metrics

Esempio models.py: # ha la seguente funzione

import google_auth
service = googleauth.initialize_service()
def total_visit(self):
    object = AnalyticsData.objects.get(utm_source=self.utm_source)
    trial = Query(object.date.startdate, object.date.enddate, object.utm_source, ga:sessions")
    result = service.data().ga().get(ids = 'ga:<your-profile-id>', start_date =   trial.startdate, end_date = trial.enddate, filters= trial.filter, metrics = trial.metrics).execute()
    total_visit = result.get('rows')
    <yr save command, ColumnName.object.create(data=total_visit) goes here>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top