我知道如何使用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 的行完美运行!