2009-06-03 7 views
1

Est-il possible de copier des feuilles de calcul avec l'API gdata ou des feuilles de calcul d'une feuille de calcul vers une autre? Pour l'instant je copie toutes les cellules d'une feuille de travail à l'autre. Une cellule par requête. C'est trop lent. Je lis à propos de "traitement par lots de cellules" et écrire ce code:copier une feuille de calcul d'une feuille de calcul à une autre

 

src_key = 'rFQqEnFWuR6qoU2HEfdVuTw'; dst_key = 'rPCVJ80MHt7K2EVlXNqytLQ' 

sheetcl = gdata.spreadsheet.service.SpreadsheetsService('[email protected]','p') 
dcs = gdata.docs.service.DocsService('[email protected]', 'p') 

src_worksheets = sheetcl.GetWorksheetsFeed(src_key) 
dst_worksheets = sheetcl.GetWorksheetsFeed(dst_key) 

for src_worksheet, dst_worksheet in zip(src_worksheets.entry, dst_worksheets.entry): 

    sheet_id = src_worksheet.id.text.split('/')[-1] 
    dst_sheet_id = dst_worksheet.id.text.split('/')[-1] 

    cells_feed = sheetcl.GetCellsFeed(src_key, sheet_id) 
    dst_cells_feed = sheetcl.GetCellsFeed(dst_key, dst_sheet_id) 

    for cell in cells_feed.entry: 
     dst_cells_feed.AddInsert(cell) 

    sheetcl.ExecuteBatch(dst_cells_feed, dst_cells_feed.GetBatchLink().href) 
 

Mais cela ne fonctionne pas. Comme je suppose que la raison est que chaque cellule dans la boucle intérieure a son id qui se composent de spreadsheet_id:

 

>>> cell.id.text 
'http://spreadsheets.google.com/feeds/cells/rFQqEnFWuR6qoU2HEfdVuTw/default/private/full/R1C1' 
>>> 
 

Répondre

1

Vous devriez probablement utiliser un cell range query pour obtenir une ligne entière à la fois, puis inserting rows dans la feuille de calcul cible.

Questions connexes