J'ai en fait trouvé un moyen de contourner ce problème, mais je ne comprends toujours pas pourquoi cela se produit. Je viens de commencer à utiliser gspread donc je suis assez nouveau.
Après avoir installé via pip et téléchargé les informations d'identification pour Google Sheets et l'API Drive, lorsque j'exécute ce code (à partir du gspread github), j'obtiens une erreur
gc = gspread.service_account(filename='filePath')
L'erreur:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Tyler\\AppData\\Roaming\\gspread\\credentials.json'
Donc, évidemment, le fichier ne se trouve pas dans le bon dossier AppData. J'ai regardé et il n'y a pas de dossier \ gspread dans AppData. J'ai même essayé d'en créer un pour rendre le chemin correct, mais cela ne fonctionnait toujours pas. J'ai finalement réussi à le faire fonctionner en utilisant une commande différente et en spécifiant le chemin exact où je place le fichier d'informations d'identification.
import gspread gc = gspread.oauth() sh = gc.open("Example spreadsheet") print(sh.sheet1.get('A1'))
Mais je suis toujours perplexe quant à la raison pour laquelle la méthode originale n'a pas fonctionné. Je suis sûr qu'il me manque quelque chose d'incroyablement simple, et toute aide sera grandement appréciée!
3 Réponses :
J'ai eu le même problème ... J'ai également ajouté un dossier gspread
sous mon foler AppData, qui ne fonctionnait pas.
Ensuite, j'ai regardé d'un peu plus près le chemin du message d'erreur renvoyé ... et gspread
essayé de mettre un dossier gspread
sous AppData \ Roaming, ce qui semble avoir fait l'affaire.
Merci pour ça! J'ai juste essayé et cela ne semble toujours pas fonctionner pour une raison quelconque. Eh bien, je suppose que je vais continuer à utiliser mon travail pour le moment.
J'ai eu le même problème aujourd'hui. Impossible de trouver le chemin "% APPDATA% \ gspread \ credentials.json".
Donc, comme le gars ci-dessus a répondu, j'ai créé le chemin et je viens de copier mon fichier d'informations d'identification. Essayez d'abord cela n'a pas fonctionné, mais j'ai renommé le fichier comme dans les instructions, "credentials.json" (avant qu'il ne soit nommé "client_secret.json"). Voici le lien: https://gspread.readthedocs.io/en/latest/oauth2.html
Donc, après cela, cela a très bien fonctionné.
Le seul problème est que lorsque vous entrez dans votre compte Google et que vous en supprimez l'accès à l'application, le code ne refera pas l'authentification. Il affichera simplement l'erreur suivante:
google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', '{\n "error": "invalid_grant",\n "error_description": "Token has been expired or revoked."\n}')
Donc, pour refaire l'authentification, je suis allé dans le même dossier que j'ai créé et j'ai effacé le fichier "allowed_user.json". Après l'avoir fait, le programme refait simplement l'authentification et crée un nouveau "allowed_user.json".
Eh bien, je pense que cela devrait être un moyen de refaire l'authentification sans avoir besoin de supprimer le fichier "allowed_user.json".
Quoi qu'il en soit, j'espère que cela vous aidera. La deuxième partie est juste au cas où vous vous êtes cassé par curiosité comme je l'ai fait.
Bonne journée.
Lorsque j'ai recherché Ce PC pour le dossier gspread, le nom du dossier avait en fait d'autres informations, y compris la version gspread. J'ai déplacé le fichier d'informations d'identification des téléchargements vers là-bas et cela a fonctionné (j'ai nommé mon fichier client_secret.json et cela fonctionnait toujours).
gspread auteur ici. Où avez-vous mis le fichier des informations d'identification au départ? Pourriez-vous s'il vous plaît exécuter cette commande dans votre invite de commande:
echo %APPDATA%
?Salut @Burnash! Merci pour la réponse. J'ai d'abord mis le fichier dans un dossier de téléchargement général car je n'ai pas trouvé le chemin spécifié dans les instructions sur le gspread github. J'ai fait écho% PATH% et il montre toutes mes variables d'environnement, mais le dossier de données de l'application n'y est pas inclus. Dois-je ajouter le dossier de données d'application en tant que variable d'environnement? Je suis assez nouveau dans la programmation, donc je suis toujours en train de comprendre les bases ici, désolé!