Ошибка разрешения API листов Google для записи с помощью gspread - PullRequest
0 голосов
/ 11 декабря 2018

Я получаю сообщение об ошибке при попытке обновить значение электронной таблицы с помощью внешнего редактора.Я использую библиотеку Python 'Gspread';У меня есть доступ для чтения к документу, но когда я пытаюсь обновить ячейку, я получаю ошибку API.

Вот код (детали безопасности скрыты).Я рассмотрел другие решения для ошибок разрешений в stackoverflow, но они не относятся к сценарию, в котором приложение может читать данные, но не записывать их.

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = [""
      , "https://www.googleapis.com/auth/script.external_request"
      , "https://www.googleapis.com/auth/spreadsheets"
      , "https://www.googleapis.com/auth/script.container.ui"
      ,   'https://spreadsheets.google.com/feeds'
      , "https://mail.google.com/"
      , " https://www.googleapis.com/auth/drive"]

credentials = ServiceAccountCredentials.from_json_keyfile_name('project-id-[hiddenID].json', scope)

gc = gspread.authorize(credentials)

sht2 = gc.open_by_url('https://docs.google.com/spreadsheets/d/[hiddenID]')

worksheet = sht2.get_worksheet(0)

val = worksheet.acell('B1').value
print(val)



worksheet.update_acell('B6', 'Bingo!')

Это последняя строка, которая вызывает ошибку

APIError: {
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

Я пытался предоставить владельцу API доступ, но, похоже, я неправильно выполняю разрешения.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 12 декабря 2018

Эта проблема была решена путем добавления того же адреса электронной почты в учетную запись, что и редактор документа.Простое исправление.

...