2009-10-27 9 views
5

Sono nuovo di zecca in Python e sto provando a scrivere un'estensione per un'app che importa informazioni GA e le analizza in MySQL. C'è una quantità eccessivamente sparsa di informazioni sull'argomento. I documenti Google sembrano avere solo esempi in JS e Java ...Google Analytics e Python

... Sono arrivato al punto in cui il mio utente può autenticarsi in GA utilizzando SubAuth. Questo 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 che ho esaurito Google cercando un esempio funzionante.

Grazie !!

EDIT: Sono diventato 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 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) 

risposta

3

Forse this post può dare una mano. Sembra che non ci siano ancora associazioni specifiche per Analytics, quindi stai lavorando con il generico gdata.

2

Utilizzo GA da poco più di un anno e da aprile 2009, ho utilizzato i collegamenti 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.

Installarlo nel modo usuale.

Per utilizzarlo: In primo luogo, in modo che non c'è bisogno di passare manualmente le credenziali di accesso ogni volta che si accede l'API, metterli in un file di configurazione in questo modo:

[Credentials] 
google_account_email = [email protected] 
google_account_password = yourpassword 

Nome questo file '.pythongoogleanalytics' e inseriscilo nella tua home directory.

E da un tipo di prompt interattivo:

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 pitone lista (nel precedente esempio, legato a 'conto' della variabile), che contiene i dati.

+0

Questo non sembra funzionare più – Eli

0

Sono necessari 3 file nell'app. client_secrets.json, analytics.dat e google_auth.py.

Creare un modulo di Query.py all'interno della 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 

modelli esempio.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>