使用Python中的Google Spreadsheet API列出工作表和相关的工作表ID

时间:2012-05-03 17:38:55

标签: gdata python-2.x

有一个电子表格,其中工作表的顺序可能会随意更改,但不会更改标题。我想在电子表格中列出所有工作表的标题,并找到相关的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,但我知道工作表的标题?

2 个答案:

答案 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
    ])