首页 文章

API密钥和已发现的Google工作表功能

提问于
浏览
1

此问题是关于在使用Python写入Google表格时使用API密钥进行身份验证 . 在Getting Started示例之后,我是使用URL的"discovering" API:

service = discovery.build('sheets', 'v4', discoveryServiceUrl=
    'https://sheets.googleapis.com/$discovery/rest?version=v4',
    developerKey=APIKEY)

以这种方式传递API密钥似乎有效(它不会引发任何异常 . )之后,我尝试使用 batchUpdate 更新电子表格:

service.spreadsheets().batchUpdate(spreadsheetId=SHEETID,
    body={'requests': requests}).execute()

这会引发401 HTTP错误:"Request is missing required authentication credential."其他函数(如 values().clear() )会导致相同的错误 .

如何将API密钥传递给已发现的Python函数?

1 回答

  • 2

    我认为你的 service 是正确的 . 问题是使用POST和PUT方法的Sheets API不能使用API密钥 . 要使用它们,请使用OAuth2的访问令牌 . 我根据自己的经历知道这一点 . 虽然当时我曾找过关于此的文件,但我找不到它 . 对不起 .

    另一方面,您可以使用Sheets API for GET方法使用API密钥 . 例如,您可以通过以下示例使用API密钥检索值 . 要使用此功能,请分享电子表格 . 如果未共享电子表格,则返回“调用者没有权限” . 如果未使用API密钥,则返回“请求缺少有效的API密钥” . 这表示需要API密钥 .

    service = discovery.build('sheets', 'v4', discoveryServiceUrl=
        'https://sheets.googleapis.com/$discovery/rest?version=v4',
        developerKey=APIKEY)
    res = service.spreadsheets().values().get(spreadsheetId=SHEETID, range='sheet1!A1:A1').execute()
    

    如果这对你没用,我误解了你的问题,我很抱歉 .

相关问题