2016-04-18 18 views
3

debuggen Nach 2 Tagen des Lesens gspread Docs, gspread Blog-Beiträge, und die meisten recent docs for using gspread Ich bin immer noch nicht in der Lage, auch nur eine Google Spreadsheet zu öffnen. Ich habe ein GDrive API-Dienstkonto eingerichtet. Es scheint, dass meine OAuth2-Anmeldeinformationen funktionieren, aber ich bekomme immer noch "SpreadsheetNotFound" -Fehler.Wie man persistent 'SpreadsheetNotFound' Fehler mit Python gspread

Mein Code sieht ungefähr so ​​aus, und läuft ohne Fehlermeldung, bis es die Google-Tabelle zu öffnen versucht:

import gspread 
from oauth2client.service_account import ServiceAccountCredentials 

scope = ['https://spreadsheets.google.com/feeds'] 

jsonfile = '/path/Python-data-GSpreadsheets-dbbc-99.json' 
credentials = ServiceAccountCredentials.from_json_keyfile_name(jsonfile,scope) 

# get authorized to access data 
gc = gspread.authorize(credentials) 
# gc returns with no error messages, so far OK 
wks = gc.open('SSTEst123').sheet1 #fails here 
#throws SpreadsheetNotFound error 

Ja, ich habe meine Adresse gmail E-Mail hinzugefügt als autorisiert zu bearbeiten (versuchte es mit und ohne) da das Dienstkonto sowieso auf alle meine Daten zugreifen kann und ich meine Tabelle mit mir selbst neu teile.

Was kann ich sonst noch versuchen herauszufinden, warum es scheitert? Haben Sie Ideen zum Debuggen, warum keine Tabellenkalkulation geöffnet werden kann?

OK, hier ist, wie ich es gelöst habe. Hatte meine Tabellen mit dem Google Drive API Dienstkonto 'E-Mail-Adresse' zu teilen (zB [email protected]) - (Es war meine 'echte' Gmail-ID/E-Mail, aber es war nicht)

Für den Feed Debuggen ... Added ein paar print() Zeilen in der gspread client.py Quelle zu sehen, ob ich etwas im Futter erhalten wurde, und Überprüfen Sie die Werte aus dem Feed. Bemerkte, dass ich einen Wert, der alten Wert war (aus dem vorherigen Skript?)

Herunterfahren und neu gestartet mein iPython-Notebook, und es funktioniert jetzt.

Antwort

0

OK, Problem gelöst. Hier ist, was ich getan habe, um es herauszufinden:

Hinzugefügt ein paar print() Zeilen in der client.py-Quelle, um zu sehen, ob ich etwas in den Feed bekam, und um die Werte aus dem Feed zu überprüfen. Bemerkte, dass ich einen Wert, der alten Wert war (aus dem vorherigen Skript?)

Herunterfahren und neu gestartet mein iPython-Notebook, und es funktioniert jetzt.

+0

Könnten Sie ein wenig darüber nachdenken, wie Sie denken, dass das funktioniert und was Sie von den gedruckten Aussagen lernen konnten? Ich habe genau das gleiche Problem, das Sie oben beschrieben haben. Es scheint mir nicht klar, dass meine GDrive App Zugriff auf "meine" Google-Dokumente hat. – Robert

+0

Niemals! Habe es funktioniert! Verwenden Sie die gleiche Dokumentation, die Sie erwähnt: http://gspread.readthedocs.org/en/latest/oauth2.html#using-signed-credentials – Robert

+0

Auch mussten meine Tabellen mit dem Google Drive API Dienstkonto "E-Mail-Adresse" (z. B. [email protected]) – BigDoug