我想从一个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”。
在任何项目的管理阶段收集,分析和报告的大多数数据与协商销售流程所需的数据不同,但是,多余的一小部分需要以编程方式从销售模板转移到销售模板。每个项目的管理模板。
所以,我来找你...堆栈溢出社区以寻求指导。真诚地欢迎任何认真的,以服务为导向的人们提供帮助。
我知道你们大多数人都比我聪明。这无济于事。因此,任何真正想帮助花花公子的人只是因为他们喜欢编码并想分享它,我就迫不及待地想听到您的消息。
答案 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);
}
您可以查看makeCopy和getDisplayValue的文档以了解更多信息。