À l'aide de developers.google.com, nous avons créé un utilisateur api et téléchargé les informations d'identification sous forme de fichier json. Maintenant sur mon macbook, l'authentification gspread fonctionne correctement avec credentials.json. lorsqu’il est déplacé de la même manière sur le serveur linux, il génère une erreur d’autorisation insuffisante.
Les versions pip et python sont identiques.
exception
gspread.v4.exceptions.APIError: {
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
code de base
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)
sheet = client.open('MySheetName').sheet1
Essayez de changer votre variable scope
comme suit:
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
Assurez-vous que Drive API est activé dans la console API.
gspread a été mis à niveau et repose maintenant sur API v4. C'est plus rapide mais cela nécessite des mises à jour de la portée.
Voici le même problème: https://github.com/burnash/gspread/issues/512
Vous semblez utiliser un compte de service. Pour que le compte de service puisse accéder à votre feuille de calcul, il doit y avoir accès.
Assurez-vous de partager la feuille avec l'adresse e-mail du compte de service, vous pouvez le faire via la page Web Google Drive
SI vous ne pouvez pas accéder même après avoir mis à jour l'étendue, essayez d'exécuter cette commande dans votre terminal:
Pipe Sudo installer 'gspread == 0.6.2' - forcer-réinstaller