Можно ли копировать электронные таблицы с помощью API gdata или рабочие таблицы из одной электронной таблицы в другую? Сейчас я копирую все ячейки с одного листа на другой. Одна ячейка на запрос. Это слишком медленно. Я читаю о «пакетной обработке ячеек» и пишу этот код:
src_key = 'rFQqEnFWuR6qoU2HEfdVuTw'; dst_key = 'rPCVJ80MHt7K2EVlXNqytLQ'
sheetcl = gdata.spreadsheet.service.SpreadsheetsService('x@gmail.com','p')
dcs = gdata.docs.service.DocsService('x@gmail.com', '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)
Но это не работает. Как я полагаю, причина в том, что каждая ячейка во внутреннем цикле имеет свой идентификатор, который состоит из spreadsheet_id:
>>> cell.id.text
'http://spreadsheets.google.com/feeds/cells/rFQqEnFWuR6qoU2HEfdVuTw/default/private/full/R1C1'
>>>