将特定单元格中的数据复制到不同文件夹中的不同工作表中的不同工作表

时间:2019-11-09 01:37:00

标签: google-apps-script

我想从一个Google工作表中运行一个脚本(通过脚本附加按钮),该脚本将另一个不同的工作表复制到另一个目标文件夹中,同时根据第一张工作表中的单元格值命名新文件。谁能指出我正确的方向? 这是我到目前为止的内容:

  function onOpen(e) {                   
  var jobTitle = SpreadsheetApp.getActiveSpreadsheet().getName();
  SpreadsheetApp.getActiveSpreadsheet().getRange("B3").setValue(jobTitle);
   }
  function CreateManFile8() {           
  var copyMan = DriveApp.getFileById("Source ID");                                  
  var toFolder = DriveApp.getFolderById("Destination ID");                                                   
  copyMan.makeCopy(toFolder);
   }

第一个功能很好,因为它允许我复制第一个电子表格模板,命名,然后在onOpen上将文件名放入输入表的适当单元格中,并通过标准表参考公式在整个电子表格中填充文件名等等。  第二个功能只是复制“ Man”。模板(从第一个“销售”模板内部),然后将其放入相应的文件夹中而不更改名称。

我需要一种命名男人的方法。根据Sales SpreadSheet模板内部的B3(或任何指定的单元格)中的值创建模板。我将脚本附加到Sales模板中的按钮上,但是它只是复制了第二个模板并将其命名为“ Source ID”;而不是B3的值。

问题背景:(对此有兴趣)

我在工作中管理的每个项目都包含“销售电子表格”模板中包含的销售流程,该模板由几个相互关联的工作表组成,而“管理电子表格”模板中包含的管理流程则由其他几个相互链接的(与标准公式)表。最终,这两个电子表格模板都被复制并用于每个新项目。

首先,每个销售潜在客户都参与了销售过程,这些过程使销售电子表格模板在整个销售过程中被复制,重命名并用相关的客户和销售数据迭代地填充。然后,在某个时候签署了涉及管理流程的合同,因此,“管理电子表格”模板也被复制,命名并用于该项目。

想法是在手动命名销售模板并使用在销售过程中收集的信息填充后,从“销售模板”中复制“ Man。Template”。

在任何项目的管理阶段收集,分析和报告的大多数数据与协商销售流程所需的数据不同,但是,多余的一小部分需要以编程方式从销售模板转移到销售模板。每个项目的管理模板。

所以,我来找你...堆栈溢出社区以寻求指导。真诚地欢迎任何认真的,以服务为导向的人们提供帮助。

我知道你们大多数人都比我聪明。这无济于事。因此,任何真正想帮助花花公子的人只是因为他们喜欢编码并想分享它,我就迫不及待地想听到您的消息。

2 个答案:

答案 0 :(得分:0)

这只是一个示例,您必须根据需要对其进行修改,这会将文件从任何文件夹复制到其他文件夹,并使用新名称:

function CreateFile8() {
  //This assumes the folders are unique, so I don't use ID
  var folders=DriveApp.getFoldersByName('Sistem Folder'); //myfolder = 'my drive' > 'sistem folder'

  if (folders.hasNext())
  {
    var mySrcFolder = folders.next();
    var Destfolders = mySrcFolder.getFoldersByName('Test'); //myDestfolder = 'my drive' > 'sistem folder' > 'Test'
    var files=mySrcFolder.getFilesByName('Jojo'); //file jojo will be copied (only if not exist), and Jojo is as template
    if (files.hasNext() && Destfolders.hasNext())
    {
      var DestFolder = Destfolders.next();
      var myFile = files.next();
      var Destfiles=DestFolder.getFilesByName('Jobe'); //file jojo will be copied (only if not exist in dest), and Jojo is as template
      if (Destfiles.hasNext()==false)
      myFile.makeCopy('Jobe', DestFolder); //And jobe is extracted from your sheet, I don't adopt here to extract from your sheet
    }
  }  
}

答案 1 :(得分:0)

如果我的理解正确,那么您需要一个函数,该函数可以在指定的文件夹中复制电子表格的副本,并使用B3单元格的值作为名称。

您可以尝试对功能进行此修改:

  function CreateManFile8() {           
     var copyMan = DriveApp.getFileById("spreadsheet Id").getId();    
     var toFolder = DriveApp.getFolderById("folder Id");       

     var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
     var sheetName = sheet.getRange('B3').getDisplayValue();

     DriveApp.getFileById(copyMan).makeCopy(sheetName, toFolder);  

}

您可以查看makeCopygetDisplayValue的文档以了解更多信息。