我知道如何使用gdata.spreadsheet.service.SpreadsheetsService()
查找电子表格的ID,但我无法弄清楚如何通过gdata.spreadsheets.client.SpreadsheetsClient()
获取ID,我很遗憾不得不将其用于OAuth2凭据。 [Related post on SpreadsheetsService not supporting 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]
但我无法弄清楚如何获取我感兴趣的特定电子表格的电子表格ID('doc_name')。我这样做是为了访问表格:
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吗?
由于
答案 0 :(得分:0)
我遇到了同样的问题并最终弄明白了:见下文:
sps = gd_client.GetSpreadsheets() print (len(sps.entry)) # shows how many spreadsheets you've got 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])
答案 1 :(得分:0)
感谢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 Dev Console中的CLIENT_EMAIL进行测试时,该表单根本不在其驱动器列表中,因此无法在工作表列表中找到它。一旦我打印了ssClient.GetSpreadsheets()
返回的对象而没有 文档查询,我就发现了这一点,并看到了零文档。
由于权限设置为允许任何拥有该链接的人进行编辑,因此对电子表格ID进行硬编码工作正常。
所以最重要的是,我需要做的就是邀请CLIENT_EMAIL成为文档的编辑者,然后从Feed中提取ID的行完美无缺!