copyTo的高级功能无法正常工作

时间:2018-01-18 05:56:58

标签: javascript google-apps-script google-sheets

我正在尝试创建自动模板流程。个人在指定单元格中填写唯一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" ...我做错了什么?

1 个答案:

答案 0 :(得分:0)

这个答案怎么样?

模式1:

您想要“清除内容列表,同时保留格式信息”。如果我的理解是正确的,您可以使用clearContents()来实现它。那么下面的修改呢?

来自:

ss.getSheetByName("Customer Details").copyTo(file,{formatOnly:true});

致:

ss.getSheetByName("Customer Details").copyTo(file).clearContents();

模式2:

如果您需要值和格式,可以按如下方式修改。复制活动工作表后,复制的工作表将被值覆盖。通过这个,公式被删除。

来自:

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);

参考文献:

如果我误解了你的问题,请告诉我。我想修改。