2010-12-06 32 views
0

Dans Google App Engine, j'essaie d'obtenir un enregistrement spécifique et le contenu associé. J'utilise le code suivant (pertinent) (tous GData nécessaire est importé et le client est authentifié):App Engine getRecord ne renvoyant pas le contenu

sclient = gdata.spreadsheet.text_db.DatabaseClient(username, password) 
gdata.alt.appengine.run_on_appengine(sclient) 
gdata.alt.appengine.run_on_appengine(sclient._GetDocsClient()) 
gdata.alt.appengine.run_on_appengine(sclient._GetSpreadsheetsClient())  

ss = sclient.GetDatabases(spreadsheet_key="0AqKqcvXam_kcdFlfckZfVzRiaVpRelp2T1FsVl9rRHc") 
processedSheet = ss[0].GetTables(worksheet_id=1) 

targetTotals = processedSheet[0].GetRecord(row_number=1) 
total1 = targetTotals.content["votea"] 

Le problème est dans la dernière ligne. Il jette cette erreur:

AttributeError: 'NoneType' object has no attribute 'content' 

J'ai regardé dans le code source pour le GData des feuilles de calcul text_db module et la ligne de retour dit ceci:

return Record(content=None, row_entry=row_feed.entry[0], 

Ce qui signifie que la fonction par la conception ne renvoie pas le contenu ? Cela n'a pas beaucoup de sens. Suis-je en utilisant la mauvaise fonction. Ce que j'essaye d'accomplir est d'obtenir la valeur des cellules dans une rangée. Ma feuille de calcul (sur laquelle traite la feuille de calcul) a des en-têtes de colonne appelés "votea", "voteb", etc. La première ligne est un entier. Alors, des idées?

+0

Etes-vous sûr que google-app-engine est le bon tag? Je ne vois aucune question google-app-engine ici. – systempuntoout

+0

Il exécute son application sur App Engine, comme vous pouvez le voir sur les premières lignes (run_on_appengine). –

+0

Le contenu doit être lu dans la méthode __init__ de la classe Record. Si le contenu est None, il appelle la méthode ExtractContentFromEntry qui initialise la propriété content. Jetez un coup d'oeil dans le même module text_db que vous regardiez déjà. –

Répondre

0

Assurez-vous que vous n'avez aucune ligne vide dans la feuille de calcul. L'API arrêtera de lire les données lorsqu'elle rencontrera la première ligne vide, donc si votre première ligne dans la feuille de calcul est vide, vous n'obtiendrez aucun résultat.