从其他 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;
}
示例来源:
示例输出:
参考:
我正在尝试从另一个“模板”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;
}