Google apps script 在第二个电子表格以第一个电子表格命名后,将单元格值从一个电子表格复制到第二个电子表格

Google apps script 在第二个电子表格以第一个电子表格命名后,将单元格值从一个电子表格复制到第二个电子表格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我们有两个不同的电子表格模板;由多个链接选项卡组成的销售电子表格 (公式运行良好,我们喜欢布局)。我们还有一个管理电子表格,其中有几个相互关联的选项卡(公式可以工作,我们也喜欢这个表格上的布局) 它们都是我们复制、重命名和用于每个新项目的模板,同时将原始和关联公式分别保留为“空白销售模板”和“空白管理模板” 并不是我们为其创建提案的所有项目都会签订合同,因此,我们通常根本不使用管理模板。当我们这样做时,我们有一个脚本,允许我们从销售电子表格中的按钮复制、命名和放置管理电子表格。这很好,但是只有销

我们有两个不同的电子表格模板;由多个链接选项卡组成的销售电子表格 (公式运行良好,我们喜欢布局)。我们还有一个管理电子表格,其中有几个相互关联的选项卡(公式可以工作,我们也喜欢这个表格上的布局)

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

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

在销售文件中单击“复制Man.File”按钮时,我们希望将销售文件封面页中指定的单元格值复制到Man文件封面页中的不同单元格。看起来很简单…听起来很简单…不是

两个都是男人。电子表格和销售电子表格包含类似摘要的“封面”选项卡,虽然它们之间的数据大部分是冗余的,但格式不同。 我怀疑这样做是不可能的,因为我们需要在创建新文件时复制数据。至少有人能确认这是可能的吗

以下是迄今为止的代码:

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

srcId-源电子表格Id

srcshname=源图纸名称

srcrgA-以A1表示法从中复制的单元格数组

desId-目标电子表格Id

DeshName-目的地工作表名称

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)

那么,您要复制的范围是什么?你想用它们复制格式还是只复制值?你好,库珀!从激活页到B8、B10、D15、E3和J14的单元格B4、B5、B10、D11和E4分别到复制的Man。文件理想情况下,在我的代码中进行最后注释时。我们当时可以在代码中的那个位置执行吗?还是需要不同的方法?在这一点上,我认为只需要值就可以了。所以,问题是:如何让应用程序脚本1)获取活动工作表中的单元格,2)将值复制到另一个工作表和第二个工作表的不同单元格中。使用.get方法,我无法获取指定的单元格,然后将它们发送到其他电子表格的其他指定单元格。感谢您让我知道这是可能的。我还没有对它进行测试,但是这段代码可以添加到我在(我的代码)的最后一个注释中,还是保留并添加到现有的功能中?我们正在尝试在创建文件时复制相关单元格数据…也就是说,在运行函数createManFile9时。我曾使用数组传输数据,但我没有找到一种方法使现有函数能够执行此操作。这可能吗?这是一个函数。给它正确的参数,它将为您进行传输。
srcrgA=['B4','B5','B10','D11','E4']
srcrgB=['B8','B10','D15','E3','J14']
但它不工作。我应该在哪里将您的代码放入现有代码中以使其工作?您注意到现有的代码和功能了吗?
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)