Developers.google.comを使用して、apiユーザーを作成し、認証情報をjsonファイルとしてダウンロードしました。今私のMacbookでは、credentials.jsonを使用しているときにgspread認証が正常に機能しています。 aws上の同じ設定をLinuxサーバーに移動すると、403不十分な権限エラーが発生します。
PIPとpythonバージョンは同じです。
例外
gspread.v4.exceptions.APIError: {
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
基本コード
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
scope
変数を次のように変更してみてください。
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
APIコンソールでDrive APIが有効になっていることを確認します。
gspreadがアップグレードされ、現在API v4に基づいています。より高速ですが、スコープ内の更新が必要です。
サービスアカウントを使用しているようです。サービスアカウントがsperadシートにアクセスするためには、アクセスする必要があります。
シートをサービスアカウントのメールアドレスと共有していることを確認してください。Googleドライブのウェブページから行うことができます
スコープを更新してもアクセスできない場合は、ターミナルで次のコマンドを実行してみてください。
Sudo pip install 'gspread == 0.6.2' --force-reinstall