Google Sheets API for Python:复制工作表时为空图表

Google Sheets API for Python:复制工作表时为空图表,python,api,google-sheets,google-sheets-api,worksheet,Python,Api,Google Sheets,Google Sheets Api,Worksheet,假设我有两个结构几乎相同的电子表格: 电子表格A: [表1(图表和数据摘要)][表2(数据)][表3(数据)] 电子表格B: [表1(为空)][表2(数据)][表3(数据)] A.Sheet1包含从A.Sheet2和A.Sheet3手动创建的图表和聚合数据 电子表格B具有与电子表格A相同的工作表顺序和工作表名称。任务是将表1从A复制到B,以便所有图表和公式都应映射到相同名称的相应工作表B中的数据 因此,我使用以下代码将整个Sheet1从A复制到B: def duplicate_worksheet

假设我有两个结构几乎相同的电子表格:

电子表格A: [表1(图表和数据摘要)][表2(数据)][表3(数据)]

电子表格B: [表1(为空)][表2(数据)][表3(数据)]

A.Sheet1包含从A.Sheet2和A.Sheet3手动创建的图表和聚合数据

电子表格B具有与电子表格A相同的工作表顺序和工作表名称。任务是将表1从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)
复制后,B.Sheet1如下所示:


在这里,我们可以看到聚合表复制成功,但有两个图表是空的(相反,
没有显示数据
消息)。电子表格本身缺少所有指定的图表数据范围和链接,这些数据应该在从A复制后保留。因此,我的问题是如何“深度复制”工作表并保留所有图表数据和链接?(当然,如果可以使用Google API的话)

由于端点只将一张表复制到另一个电子表格,因此如果一张表是使用另一张表中的数据构建的,它将丢失该表

作为一种解决方法,您可以使用原始图表的属性进行编辑,这样它看起来就像是您所希望的图表的直接副本

您将需要使用端点。在Python中,您的请求如下所示:

body = {
    'requests': requests
}
response = service.spreadsheets().batchUpdate(
    spreadsheetId=spreadsheet_id,
    body=body).execute()