2017-02-22 2 views
9

Ich habe einen Google Drive-Ordner mit Hunderten von Arbeitsmappen. Ich möchte die Liste durchlaufen und Daten aktualisieren. Aus irgendeinem Grund kann gspread nur bestimmte Arbeitsmappen öffnen, aber keine anderen. Ich hatte erst vor kurzem dieses Problem.gspread "SpreadsheetNotFound" auf bestimmten Arbeitsmappen

Es ist kein Zugriffsproblem, da sich alles im selben Ordner befindet.

Ich bekomme raise SpreadsheetNotFound wenn ich open_by_key(key). Aber dann, wenn ich den Schlüssel nehme und ihn in eine URL einfüge, öffnet sich das Blatt. Was bedeutet, dass es nicht der Schlüssel ist.

Was geht hier vor? Ich bin überrascht, dass andere Leute diesem Fehler nicht begegnen.

Habe ich mein Limit für die Anzahl der Google-Blätter erreicht, die ich haben kann? Ich habe ungefähr zweitausend.

Update: Ich finde, wenn ich in die Arbeitsmappe gehe und stochere, wird das Blatt dann erkannt ?? !! Was bedeutet das? Es erkennt das Blatt nicht, wenn das Blatt nicht kürzlich aktiv ist ???

Auch wenn ich versuche, Google App Script SpreadsheetApp.openById zu verwenden, wird der Schlüssel erkannt! Also das Blatt ist da, ich kann es einfach nicht mit gspread öffnen. Ich benutze Google-Skript, um etwas auf das Blatt zu schreiben, bevor es von gspread erkannt wird.

Ich kann das Blatt mit pygsheets öffnen, aber da es neu und so fehlerhaft ist, kann ich es nicht verwenden. Es sieht aus wie ein APIv4 Problem? Einige Blätter können nicht mit APIv3 geöffnet werden?

Update: Hier ist eine weitere Beobachtung. Nachdem Sie die Arbeitsmappe mit APIv4 geöffnet haben, können Sie sie nicht mehr mit V3 öffnen.

+0

Vielleicht werden einzelne Arbeitsmappen im Ordner nicht mit dem Google-Dienstkonto-Client geteilt? –

+0

@ Haleemur Ali. Nein der ganze Ordner ist mit dem Client geteilt – jason

+0

Nur eine Idee: hast du 'open_by_url' anstatt' open_by_key' versucht? –

Antwort

2

Meine Vermutung ist, dass Sie die Google Drive API Grenze von „pro 100 Sekunden pro Benutzer Abfragen“ schlagen können, die 1000 und kann nicht auf einen höheren Wert geändert werden.

Lösung 1:

Sie können versuchen, für eine höhere Quote anzuwenden, indem Sie Projektseite gehen:
1 - DASHBOARD
2 - QUOTEN
3 - Klicken Sie auf dem Stift nach "Abfragen pro 100 Sekunden pro Benutzer"
4 - Klicken Sie dann auf „Bewerben Sie sich für höhere Quote
5 - Sie werden am Ende-up auf https://support.google.com/code/contact/drive_quota, aber wenn Sie obigen Schritte folgen, wird das Formular die project und user Details bereits gefüllt.


Lösung 2:

Ich hatte das gleiche Problem mit nur ein paar Tabellen auf meinem Konto, war das Problem gelöst durch:

1 - Öffnen der json Schlüsseldatei (projectname-ca997255dada.json)
2 - Finden Sie den Wert client_email, das heißt:

"client_email": "[email protected]", 

3 - Geben Sie Ihre Blätter mit dieser E-Mail weiter

Hinweis: Sie können versuchen, nur eine Tabelle zu ändern, die Sie nicht öffnen können, und prüfen, ob das Problem durch das obige Problem gelöst wird.

+0

Ich denke nicht, dass das richtig ist, denn ich würde morgens als erstes aufwachen und versuchen, einen einfachen Code zu starten, um nur ein Blatt zu öffnen. Im Grunde die erste Anfrage des Tages ... und das geht immer noch nicht. – jason

+0

Haben Sie Feuer- oder AV-Störungen in Betracht gezogen? –

+0

Ja, das ist nicht das Problem. – jason

1

Ich habe dieses Problem wiederholt. Der einzige dauerhafte Fix, den ich gefunden habe, besteht darin, die Datei erneut mit dem api-Benutzer zu teilen. Es listet den api-Benutzer bereits als freigegeben auf (da er sich im selben freigegebenen Ordner befindet wie alles andere), aber nach dem "re-sharing" kann ich keine Verbindung mit gspread herstellen.

Darauf basierend glaube ich, dass es möglicherweise ein Berechtigungsproblem ist (Google konnte die korrekte Berechtigung für den API-Benutzer nicht registrieren, wenn er über APIv3 darauf zugreift).

2

Das klingt, als ob Sie eine Begrenzung in gspread treffen.

Auch wenn Sie eine Tabelle nach Schlüssel öffnen, lädt gspread immer noch zuerst einen Feed aller explizit geteilten Blätter mit https://spreadsheets.google.com/feeds/spreadsheets/private/full und prüft, ob der von Ihnen bereitgestellte Schlüssel darunter ist.

Das Problem besteht darin, dass dieser Feed nur 500 Dateien auflistet. Wenn Ihr Schlüssel nicht zu diesen 500 gehört, erhalten Sie SpreadsheetNotFound, auch wenn die Tabelle zugänglich ist.

Ich würde vermuten, dass der Feed nach zuletzt verwendet wird, das erklärt, warum die Bearbeitung es wieder sichtbar macht gspread.

Das relevante Problem ist here.

Verwandte Themen