从其他 sheet 创建一个新的 sheet 并复制他的样式(nodejs,google Sheets)

Create a new sheet from on other sheet and copy his style (nodejs, googleSheets)

我正在尝试从另一个“模板”sheet 创建一个新的 sheet。但我没有找到从模板复制样式的正确方法。它只是 return 没有样式的 sheet 的副本(没有背景颜色,没有文本字体等...)

你能帮帮我吗?

const readRows = async ({ range }) => {
    const spreadsheetId = '1';
    return await g.sheets.spreadsheets.values.get({
        spreadsheetId,
        range,
        majorDimension: 'ROWS',
    });
};

const updateSheet = async ({ spreadsheetId, range, dimension, values, valueInputOption } ) => {
    const result = await g.sheets.spreadsheets.values.update({
        spreadsheetId,
        range,
        valueInputOption: valueInputOption || SheetInputMode.RAW,
        requestBody: {
            majorDimension: dimension || SheetDimension.ROWS,
            range,
            values,
        },
    });
};

const createNewSheet = async (req, res) => {
    const spreadsheetId = '1';
    const newSheetName = 'test';
    const createNewSheet = await g.sheets.spreadsheets.batchUpdate({
        spreadsheetId,
        requestBody: {
            requests: [
                {
                    addSheet: {
                        properties: {
                            title: newSheetName,
                        },
                    },
                },
            ],
        },
    });

    if (createNewSheet !== null) {
        const template = await readRows({ range: 'template' });

        const updateNewSheet = await updateSheet({
            spreadsheetId,
            range: newSheetName,
            dimension: SheetDimension.COLUMNS,
            values: template.data.values as any,
            valueInputOption: SheetInputMode.RAW,
        });

        res.send(success: "success");
    }
}

您可以尝试 spreadsheets.sheets.copyTo

示例代码见下面的参考 link:

const request = {
  // The ID of the spreadsheet containing the sheet to copy.
  spreadsheetId: 'sourceSsID', 
  // gid in the sheet link
  sheetId: 0,  
  resource: {
    // The ID of the spreadsheet to copy the sheet to.
    destinationSpreadsheetId: 'destinationSsID',  
  },
  auth: authClient,
};

try {
  const response = (await sheets.spreadsheets.sheets.copyTo(request)).data;
}

示例来源:

示例输出:

参考: