代码之家  ›  专栏  ›  技术社区  ›  Andomar

API键和发现的Google sheets函数

  •  1
  • Andomar  · 技术社区  · 7 年前

    这个问题是关于在使用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函数?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tanaike    7 年前

    我认为你的 service 是正确的。问题是,使用POST和PUT方法的Sheets API不能使用API键。为了使用它们,请使用OAuth2的访问令牌。我从自己的经历中知道这一点。虽然当时我已经查找了有关这方面的文件,但我没有找到。我很抱歉。

    另一方面,可以使用API键将Sheets 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()
    

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