假设我有两个结构几乎相同的电子表格:
电子表格A:[Sheet1(图表和数据摘要)] [Sheet2(数据)] [Sheet3(数据)] ...
电子表格B:[Sheet1(空)] [Sheet2(数据)] [Sheet3(数据)] ...
A.Sheet1包含手动创建的图表以及来自A.Sheet2和A.Sheet3的汇总数据。
电子表格B具有与电子表格A中相同的工作表顺序和工作表名称。任务是将Sheet1从A复制到B,以便所有图表和公式都应映射到具有相同名称的B的相应工作表中的数据。
因此,我使用以下代码将整个Sheet1从A复制到B:
def duplicate_worksheet(from_spreadsheet_id,
sheet_id,
to_spreadsheet_id,
credentials,
title=None):
service = discovery.build('sheets', 'v4', credentials=credentials)
copy_sheet_to_another_spreadsheet_request_body = {
'destination_spreadsheet_id': to_spreadsheet_id
}
request = service.spreadsheets().sheets().copyTo(spreadsheetId=from_spreadsheet_id,
sheetId=sheet_id,
body=copy_sheet_to_another_spreadsheet_request_body)
response = request.execute()
if title:
new_sheet_id = response['sheetId']
new_title = title
rename_worksheet(to_spreadsheet_id, new_sheet_id, new_title, credentials)
在这里,我们可以看到聚合表已成功复制,但是2个图表为空(相反,No data
显示消息)。电子表格本身缺少所有指定的图表数据范围和链接,这些数据应该从A复制后仍然存在。所以我的问题是如何“深复制”工作表并保留所有图表数据和链接?(当然,如果可以使用Google API的话)
由于使用以下方法,该图表被复制为空:电子表格.sheets.copyTo端点仅将一个工作表复制到另一电子表格,因此,如果一个图表是使用另一工作表中的数据构建的,则它将丢失。
作为一种解决方法,您可以使用原始图表的属性来编辑空图表的属性,这样一来,它就可以像您期望的那样直接复制。
您将需要使用方法:sheetsheets.batchUpdate端点。在Python中,您的请求将如下所示:
body = {
'requests': requests
}
response = service.spreadsheets().batchUpdate(
spreadsheetId=spreadsheet_id,
body=body).execute()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句