脚本复制非活动的工作表在谷歌工作表



我有下面这个脚本,它可以很好地复制一个工作表,并从单元格A3的内容重命名它。

现在我想运行这个确切的函数,但在一个非活动的(甚至隐藏的)工作表。它可以是只复制值的副本,因为不需要复制所有的深度数据。

function AddReportSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();
var myValue = SpreadsheetApp.getActiveSheet( ).getRange("A3").getDisplayValue();
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue);
}

说明:

您的目标是复制一个特定的工作表,并根据原始工作表的单元格A3的值设置副本的名称。

  • 使用getSheetByName(name)根据其名称获取特定的工作表。

  • 您可以使用sheet. copyto(电子表格)方法来实现您的目标,并将其与setName(name)连接起来,根据单元格A3的值设置工作表的名称。

解决方案:

复制工作表:

选择要复制的工作表的名称。以Sheet1:

为例。
function AddReportSheet() {   
const sheetName = "Sheet1"; // put the name of your sheet to duplicate
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName(sheetName);
const myValue = sheet.getRange('A3').getDisplayValue();
sheet.copyTo(ss).setName(myValue);   
}

复制工作表,只保留值和格式:

如果您想只保留重复工作表的值,那么您可以使用copyTo(目的地,选项)并只保留内容,例如{contentsOnly:true}

function AddReportSheet() {   
const sheetName = "Sheet1"; // put the name of your sheet to duplicate
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName(sheetName);
const myValue = sheet.getRange('A3').getDisplayValue();
const new_sheet = sheet.copyTo(ss).setName(myValue);   
const rng = new_sheet.getDataRange();
rng.copyTo(rng, {contentsOnly:true})
}

最新更新