2012-05-03 35 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