有一个电子表格,其中工作表的顺序可能会随意更改,但不会更改标题。我想在电子表格中列出所有工作表的标题,并找到相关的workheet_id。
# Google Docs Login information
gd_client = gdata.spreadsheet.service.SpreadsheetsService()
gd_client.email = 'username'
gd_client.password = 'password'
gd_client.source = 'SO demo'
gd_client.ProgrammaticLogin()
# Obtain list feed of specific worksheet.
feed = gd_client.GetListFeed(spreadsheet_id, worksheet_id)
如果我不知道工作表的顺序,我如何获得正确的worksheet_id,但我知道工作表的标题?
答案 0 :(得分:3)
从this website修改我自己的问题的快速回答。
def PrintFeed(feed):
for i, entry in enumerate(feed.entry):
print '%s %s' % (entry.id.text.split('/')[-1], entry.title.text)
def worksheet_dict(feed):
d = defaultdict(str)
for i, entry in enumerate(feed.entry):
d[entry.title.text] = entry.id.text.split('/')[-1]
return d
s = gd_client.GetWorksheetsFeed(key=spreadsheet_id)
PrintFeed(s)
wkst_dict = worksheet_dict(feed)
print wkst_dict
答案 1 :(得分:3)
更清洁的方式:
import urlparse
import os
def worksheet_ids(feed):
def _id(entry):
split = urlparse.urlsplit(entry.id.text)
return os.path.basename(split.path)
return dict([
(entry.title.text, _id(entry))
for entry in feed.entry
])