web-dev-qa-db-ja.com

PythonでGoogle Sheets APIにアクセスする

現在、python=を介してgoogleシートを更新しようとしていますが、権限に関する問題が発生しています。

このTwilioガイドの指示に従いました: https://www.twilio.com/blog/2017/02/an-easy-way-to-read-and-write-to-a- google-spreadsheet-in-python.html

私はこれをすべてJupyterで行っており、JSONファイルを適切なコードディレクトリに保存しました。スコープ、クレジット、クライアントの定義に問題はありませんでした。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_id.json', scope)
client = gspread.authorize(creds)

sheet = client.open("MixIQ Tracker").sheet1

2つをリンクするためにすべての手順を実行しましたが、最後の行でこのAPIエラーが発生しています。

APIError: {
"error": {
  "errors": [{
      "domain": "global",
      "reason": "insufficientPermissions",
      "message": "Insufficient Permission: Request had insufficient authentication scopes."
    }],
  "code": 403,
  "message": "Insufficient Permission: Request had insufficient authentication scopes."
 }
}

これを解決する方法は正確にはわかりません。どんな方向でも大歓迎です!

10
KirklandShawty

GoogleドライブAPIエンドポイントをスコープに含める必要があると思います。 Mailchimp APIからGoogle Sheetにデータを書き込んでいました。

これをチェックしてください: https://www.youtube.com/watch?v=7I2s81TsCnc >それは私にとって役に立ちました。

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
15
Michael deVry

google API scopes documentation を見ると、使用しているスコープURLはどこからも参照されていません。これが問題である可能性があります。スコープのURLをhttps://www.googleapis.com/auth/spreadsheetsに変更してみてください。

また、GoogleデベロッパーコンソールのプロジェクトでスプレッドシートAPIが正しく有効になっていることを確認してください。

または、スコープを処理する Sheetfuライブラリ (私は作成者です)を試すこともできます。

3
Philippe Oger

これをスコープとして使用します。

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']

「ServiceAccountCredentials」を呼び出す前に

「console.cloud.google」のGoogle Drive APIとSheets APIを有効にする必要があります。

2
Iddos

このスコープだけが必要です

scope = ["https://www.googleapis.com/auth/drive"]
0
Jack