使用gspread编写的Google表格API权限错误

时间:2018-12-11 00:07:59

标签: google-apps-script google-api google-sheets-api gspread

尝试通过外部编辑器更新电子表格的值时出现错误。我正在使用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 :(得分:1)

此问题通过在帐户中添加与文档编辑者相同的电子邮件来解决。简单修复。