我正在尝试创建自动模板流程。个人在指定单元格中填写唯一ID,并且工作表会自动填充与该客户相关的预先创建的数据。
之后,用户激活以下代码,并为该客户创建一个新文件,新文件名作为文件内部客户的名称。请注意,函数复制值和格式很重要,但不能使用此公式。原因是,公式从模板中的其他工作表中提取数据。我只想在新客户工作簿中创建一个工作表。
以下是代码:
function copy2() {
var folder=DriveApp.getFoldersByName("Customers").next();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0,1];
var cellWithFileName = ss.getRange("B3");
var name = cellWithFileName.getValue();
var file=SpreadsheetApp.create(name);
var fileID = file.getId()
var copyFile=DriveApp.getFileById(fileID);
var destination = DriveApp.getFileById(fileID)
folder.addFile(copyFile);
DriveApp.getRootFolder().removeFile(copyFile);
ss.getSheetByName("Customer Details").copyTo(file,{formatOnly:true});
}
代码复制就像一个魅力,但副本包括公式(我不想要!)。任何使用copyTo(destination,AdvancedOption)的尝试都将失败。我使用了以下内容:ss.getSheetByName("Customer Details").copyTo(file,{formatOnly:true})
格式,它会出错:"无法找到方法copyTo" ...我做错了什么?
答案 0 :(得分:0)
这个答案怎么样?
您想要“清除内容列表,同时保留格式信息”。如果我的理解是正确的,您可以使用clearContents()
来实现它。那么下面的修改呢?
ss.getSheetByName("Customer Details").copyTo(file,{formatOnly:true});
ss.getSheetByName("Customer Details").copyTo(file).clearContents();
如果您需要值和格式,可以按如下方式修改。复制活动工作表后,复制的工作表将被值覆盖。通过这个,公式被删除。
ss.getSheetByName("Customer Details").copyTo(file,{formatOnly:true});
var newsheet = ss.getSheetByName("Customer Details").copyTo(file);
var srcrng = ss.getDataRange();
var values = srcrng.getValues(); // or srcrng.getDisplayValues()
newsheet.getRange(srcrng.getA1Notation()).setValues(values);
如果我误解了你的问题,请告诉我。我想修改。