在 gdata.spreadsheets.client.SpreadsheetsClient() [Python] 中使



我知道如何使用gdata.spreadsheet.service.SpreadsheetsService()查找电子表格的 ID,但我无法弄清楚如何通过 gdata.spreadsheets.client.SpreadsheetsClient() 获取 ID,不幸的是我被迫将其用于 OAuth2 凭据。[有关电子表格服务不支持OAuth2的相关文章。

给定完全授权的电子表格客户端:

  • ssClient = gdata.spreadsheets.client.SpreadsheetsClient()
    

我可以使用以下代码按预期获取工作表 ID:

  • ws_name      = 'My Worksheet'
    q            = gdata.spreadsheets.client.WorksheetQuery (ws_name, 'true')
    ws           = ssClient.GetWorksheets(spreadsheet_id, query=q)
    worksheet_id = ws.entry[0].id.text.rsplit('/',1)[1]
    

但是我不知道如何获取我感兴趣的特定电子表格("doc_name"(的电子表格ID。我这样做是为了访问工作表:

  • q    = gdata.spreadsheets.client.SpreadsheetQuery (doc_name, 'true')
    feed = ssClient.GetSpreadsheets(query=q)
    # this works fine as long as CLIENT_EMAIL is an authorized editor
    spreadsheet_id = feed.entry[0].id.text.rsplit('/',1)[1]
    

但是有人可以告诉我如何从GetSpreadsheets()返回的对象中获取电子表格 ID 吗?

谢谢

我遇到了同样的问题,最终想通

了: 见下文:
    SPS = gd_client。获取电子表格((        print (len(sps.entry(( # 显示您有多少电子表格        squery = gdata.spreadsheets.client.SpreadsheetQuery (title="TEST2", title_exact=True(        sfeed = gd_client.get_spreadsheets(query = squery(        print(sfeed.entry[0].id.text.rsplit('/',1([1](

感谢user4426017,我终于想通了。要从 feed 中获取电子表格 ID,GetSpreadsheets() 返回的对象,正如建议的那样,我需要做的就是添加:

  • spreadsheet_id = feed.entry[0].id.text.rsplit('/',1)[1]
    

实际问题并不像我想象的那么险恶,与gdata.spreadsheet.service.SpreadsheetsService()gdata.spreadsheets.client.SpreadsheetsClient()之间的区别无关,这只是一个权限问题。

我们的电子表格配置为只有拥有链接的人才能进行编辑,因此当我在实施 OAuth2 之前进行测试时,我是通过我的 Google 云端硬盘中包含链接的帐户进行的。当我开始使用 Google 开发控制台中的CLIENT_EMAIL进行测试时,该工作表根本不在其驱动器列表中,因此无法在工作表列表中找到它。一旦我打印了没有 doc 查询 ssClient.GetSpreadsheets() 返回的对象,我就发现了这一点,并且看到零文档。

由于权限设置为允许拥有链接的任何人进行编辑,因此对电子表格 ID 进行硬编码就可以了。

所以底线是我需要做的就是邀请CLIENT_EMAIL成为文档的编辑,然后从提要中提取 ID 的行完美运行!

最新更新