这个问题是关于在使用Python写入Google表格时使用API密钥进行身份验证。在Getting Started示例之后,我发现"发现"使用URL的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错误:"请求缺少必需的身份验证凭据。"其他功能如values().clear()
会导致相同的错误。
如何将API密钥传递给已发现的Python函数?
答案 0 :(得分:2)
我认为您的service
是正确的。问题是使用POST和PUT方法的Sheets API不能使用API密钥。要使用它们,请使用OAuth2的访问令牌。我根据自己的经历知道这一点。虽然当时我曾找过关于此的文件,但我找不到它。对不起。
另一方面,您可以使用Sheets API使用API密钥进行GET方法。例如,您可以通过以下示例使用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()
如果这对您没用,我误解了您的问题,我很抱歉。