2009-10-27 25 views
5

Soy nuevo en Python y estoy intentando escribir una extensión para una aplicación que importa información de GA y la analiza en MySQL. Hay una cantidad de información vergonzosamente escasa sobre el tema. Los Documentos de Google solo parecen tener ejemplos en JS y Java ...Google Analytics y Python

... He llegado al punto en que mi usuario puede autenticarse en GA usando SubAuth. Ese código está aquí:

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) 

Por lo tanto, el siguiente paso es llegar a los datos. Encontré esta biblioteca: (cuidado, la IU es ofensiva) http://gdata-python-client.googlecode.com/svn/trunk/pydocs/gdata.analytics.html Sin embargo, me ha resultado difícil navegar. Parece que debería ser gdata.analytics.AnalyticsDataEntry.getDataEntry(), pero no estoy seguro de lo que me está pidiendo que lo pase.

Me encantaría un empujón en la dirección correcta. Siento que he agotado a google buscando un ejemplo de trabajo.

Gracias!

EDITAR: He llegado más lejos, pero mi problema todavía no está resuelto. El siguiente método devuelve datos (creo) ... el error que obtengo es: "el objeto 'str' no tiene ningún atributo '_BecomeChildElement'" ¿Creo que estoy devolviendo un feed? Sin embargo, no sé cómo profundizar en ello. ¿Hay alguna manera de inspeccionar este objeto?

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) 

Respuesta

3

Tal vez this post puede ayudar. Parece que aún no hay enlaces específicos de Analytics, por lo que está trabajando con el gdata genérico.

2

He estado usando GA por un poco más de un año y desde alrededor de abril de 2009, he utilizado de Python suministrados en un paquete llamado python-GoogleAnalytics de Clint Ecker et al. Hasta ahora, funciona bastante bien.

Aquí es donde conseguirlo: http://github.com/clintecker/python-googleanalytics.

Instálelo de la manera habitual.

Para usarlo: En primer lugar, por lo que no tiene que pasar manualmente en sus credenciales de acceso cada vez que acceda a la API, ponerlos en un archivo de configuración de este modo:

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

Nombre este archivo '.pythongoogleanalytics' y póngalo en su directorio personal.

Y a partir de un tipo de modo interactivo:

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']) 

El método 'get_account' devolverá una lista de pitón (en el ejemplo anterior, con destino a la variable 'cuenta'), que contiene sus datos.

+0

Esto no parece trabajar más – Eli

0

Necesita 3 archivos dentro de la aplicación. client_secrets.json, analytics.dat y google_auth.py.

Crear una Query.py módulo dentro de la aplicación:

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 

Ejemplo modelos.PY: #has la siguiente función

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>