将单元格值从一个电子表格复制到第二个电子表格,直到第二个以第一个命名



我们有两个不同的电子表格模板;由几个链接选项卡组成的销售电子表格(公式运行良好,我们喜欢这种布局(。我们还有一个管理电子表格,里面有几个相互关联的选项卡(公式很有效,我们也喜欢这个选项卡的布局(。

它们都是我们为每个新项目复制、重命名和使用的模板,同时将原始公式和相关公式分别保留为"空白销售模板"one_answers"空白管理模板"。

并不是所有我们为之创建提案的项目都签订了合同,所以通常我们根本不使用管理模板。当我们这样做时,我们有一个脚本,允许我们从销售电子表格中的一个按钮复制、命名和放置管理电子表格。这很好,但只有Sales文件名被复制到Man文件中,我们也想复制单元格数据。

当从"销售文件"中单击"复制人工文件"按钮时,我们希望将"销售文件封面"中指定的单元格值复制到人工文件封面中的不同单元格中。看起来很简单。。。听起来很简单。。。。它是Aint!

Man.Spreadsheet和Sales Spreadsheets都包含类似摘要的"封面"选项卡,尽管它们之间的数据大多是多余的,但格式不同。我怀疑不能这样做,因为我们需要在创建新文件时复制数据。至少有人能证实这是可能的吗?

这是迄今为止的代码:

function CreateManFile9() {        
var copyMan = DriveApp.getFileById("Man. Template").getId();    
var toFolder = DriveApp.getFolderById("Man. Template folder");       
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
//button in one cell of active sheet runs this script
var sheetName = sheet.getRange('B3').getDisplayValue();                // 
//Can't we grab additional cells, at this point, and copy them over too?
DriveApp.getFileById(copyMan).makeCopy(sheetName, toFolder);  

}

function copyValuesSrcToDes(srcId,srcshname,srcrgA,desId,desshname,desrgA) {
var src=SpreadsheetApp.openById(srcId);
var srcsh=src.getSheetByName(srcshname);
var des=SpreadsheetApp.openById(desId);
var dessh=des.getSheetByName(desshname)
srcrgA.forEach(function(sA1,i){
dessh.getRange(desrgA[i]).setValue(srcsh.getRange(sA1).getValue());
});
}

srcId-源电子表格Id

srcshname=源工作表名称

srcrgA-以A1表示法复制的细胞阵列

desId-目的地电子表格Id

desshname-目的地工作表名称

desrgA=以A1表示法复制到的单元格数组

这就是我认为你需要做的:

function CreateManFile9() {        
var copyMan = DriveApp.getFileById("Man. Template").getId();    
var toFolder = DriveApp.getFolderById("Man. Template folder");       
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
var sheetName = sheet.getRange('B3').getDisplayValue();                // 
var file2=DriveApp.getFileById(copyMan).makeCopy(sheetName, toFolder);  
var srcId=copyMan;
var srcshname=sheet.getName();
var srcrgA=['B4','B5','B10','D11','E4'];
var desId=file2.getId();
var desshname=SpreadsheetApp.openById(desId).getSheets()[0].getName();
var desrgA=['B8','B10','D15','E3','J14'] 
copyValuesSrcToDes(srcId,srcshname,srcrgA,desId,desshname,desrgA)

最新更新