将工作表从一个电子表格复制到另一个

1 投票
1 回答
1702 浏览
提问于 2025-04-15 12:01

请问有没有办法用gdata API把电子表格或者工作表从一个表格复制到另一个表格?现在我只能一个一个单元格地复制,速度太慢了。我听说过“单元格批处理”,于是写了这段代码:


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)

但是它没有成功。我想可能是因为内层循环中的每个单元格都有一个由电子表格ID组成的唯一标识:


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

1 个回答

1

你可能应该使用一个单元格范围查询,这样可以一次性获取整行数据,然后再插入行到目标电子表格中。

撰写回答