如何解决使用工作表模板插入新工作表不起作用
在活动工作表的A列中有工作表名称。
我正在尝试使每个新标签都与我的Template
标签相同,但它们都是空白。
代码如下:
/** @OnlyCurrentDoc */
function makeTabs(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var last = sheet.getLastRow();
for(var i = 1; i < last ; i++){
var tabName = sheet.getRange(i+1,1).getValue();
var templateSheet = ss.getSheetByName("Template");
var create = ss.insertSheet(tabName,{template: templateSheet});
}
}
谁能说出为什么创建的图纸不基于模板?
解决方法
解决方案:
这是您要寻找的东西:
function copySheets() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const last = sheet.getLastRow();
const template = ss.getSheetByName('Template');
const sh_names = sheet.getRange('A2:A'+last).getValues().flat([1]);
sh_names.forEach((name)=>{
const copy=template.copyTo(ss);
copy.setName(name);
})
}
输出:
说明:
我正在使用forEach()遍历活动工作表的 A列中的名称列表。对于每个名称,我将使用以下代码创建模板的副本:
const copy=template.copyTo(ss);
copy.setName(name);
请记住,选择活动工作表时,需要运行此功能(请参阅我的屏幕截图);包含要创建的图纸名称的图纸。这就是我认为,根据工作表名称获得工作表以确保输入正确的信息更安全的原因:
const sheet = ss.getSheetByName('Sheet1');
很明显,您不能多次运行此功能。它将输出一个错误,指出具有这些工作表名称的工作表已经存在。
最后但并非最不重要的是,所有重复的工作表将具有与 Template 工作表完全相同的内容和格式。根据您的问题,我认为这是您的目标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。