API 键并发现 Google 表函数
API key and discovered Google sheets functions
这个问题是关于在使用 Python 写入 Google sheet 时使用 API 密钥进行身份验证。按照 Getting Started 示例,我是 "discovering" API 使用 URL:
service = discovery.build('sheets', 'v4', discoveryServiceUrl=
'https://sheets.googleapis.com/$discovery/rest?version=v4',
developerKey=APIKEY)
以这种方式传递 API 键似乎可行(它不会抛出异常。)之后,我尝试用 batchUpdate
:[=17= 更新 spreadsheet ]
service.spreadsheets().batchUpdate(spreadsheetId=SHEETID,
body={'requests': requests}).execute()
这会引发 401 HTTP 错误:"Request is missing required authentication credential." 其他函数如 values().clear()
会导致相同的错误。
如何将 API 键传递给已发现的 Python 函数?
我认为您的 service
是正确的。问题是使用 POST 的 Sheets API 和 PUT 方法不能使用 API 键。为了使用它们,请使用 OAuth2 的访问令牌。我根据我的经验知道这一点。当时虽然也找过这方面的文档,但是没找到。对不起。
另一方面,您可以使用 Sheets API 获取使用 API 键的方法。例如,您可以通过以下示例使用 API 键检索值。为了使用它,请共享电子表格。当电子表格未共享时,返回 "The caller does not have permission"。如果 API 键未用于此,则返回 "The request is missing a valid API key"。这表示需要 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()
如果这对您没有用并且我误解了您的问题,我很抱歉。
这个问题是关于在使用 Python 写入 Google sheet 时使用 API 密钥进行身份验证。按照 Getting Started 示例,我是 "discovering" API 使用 URL:
service = discovery.build('sheets', 'v4', discoveryServiceUrl=
'https://sheets.googleapis.com/$discovery/rest?version=v4',
developerKey=APIKEY)
以这种方式传递 API 键似乎可行(它不会抛出异常。)之后,我尝试用 batchUpdate
:[=17= 更新 spreadsheet ]
service.spreadsheets().batchUpdate(spreadsheetId=SHEETID,
body={'requests': requests}).execute()
这会引发 401 HTTP 错误:"Request is missing required authentication credential." 其他函数如 values().clear()
会导致相同的错误。
如何将 API 键传递给已发现的 Python 函数?
我认为您的 service
是正确的。问题是使用 POST 的 Sheets API 和 PUT 方法不能使用 API 键。为了使用它们,请使用 OAuth2 的访问令牌。我根据我的经验知道这一点。当时虽然也找过这方面的文档,但是没找到。对不起。
另一方面,您可以使用 Sheets API 获取使用 API 键的方法。例如,您可以通过以下示例使用 API 键检索值。为了使用它,请共享电子表格。当电子表格未共享时,返回 "The caller does not have permission"。如果 API 键未用于此,则返回 "The request is missing a valid API key"。这表示需要 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()
如果这对您没有用并且我误解了您的问题,我很抱歉。