2012-05-03 36 views
1

谷歌电子表格API相关的工作表中的ID有一个电子表格中的工作表的顺序可以任意改变,但标题。我想列出所有工作表的标题在电子表格中,找到相关worksheet_id。名单表和从在Python

# 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如果我不知道什么样的顺序工作表在做什么,但我知道在工作表的标题?

回答

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