在一个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,文件名进入输入表的适当单元格,它通过标准工作表引用公式填充整个电子表格。第二个功能就是复制“人”。模板(从第一个"Sales“模板内部)并将其放入适当的文件夹中,而不更改名称。
我需要一个给男人起名字的方法。根据B3 (或任何指定单元格)中的值从销售SpreadSheet模板中获取的模板。我将脚本附加到Sales模板内的一个按钮上,但它只是复制第二个模板并将其命名为"Source“,而不是B3的值。
发行背景:(供有兴趣者参考)
我在工作中管理的每一个项目都需要包含在“销售电子表格”模板中的销售流程,该模板由几个相互链接的工作表组成,管理流程包含在一个“管理电子表格”模板中,该模板由几个其他相互链接(带有标准公式)表组成。最后,这两个电子表格模板都被复制并用于每个新项目。
首先,每个销售前景都使用销售过程,这些过程导致销售电子表格模板在整个销售过程中被复制、重命名并以迭代方式填充相关的客户和销售数据。然后,在某个时候,签订涉及管理过程的合同,从而复制、命名“管理电子表格”模板,并将其用于项目。
这样做的目的是在销售模板被手动命名并填充销售过程中收集的信息之后,从'Sales模板‘中复制"Man. Template“。
在任何项目的管理阶段收集、分析和报告的大多数数据都不同于协商销售过程所需的数据,但需要以编程方式将每个项目的少量冗余数据从销售模板转移到管理模板。
因此,我来到YOU...the堆栈溢出社区进行指导。任何认真的、以服务为导向的人提供帮助都会受到真正的感谢.
我知道你们大多数人都比我聪明。这是没有帮助的提醒。所以,任何一个真正想要帮助一个人的人,仅仅因为他们喜欢编码并且想要分享它,我就迫不及待地想听到你的消息。
发布于 2019-11-11 02:36:24
如果我正确理解,您需要一个函数,该函数在指定的文件夹中生成电子表格的副本,并以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的文档以获得更多信息。
发布于 2019-11-08 23:35:51
这只是一个示例,您必须为您的目的修改它,这将将一个文件从任何文件夹复制到其他具有新名称的文件夹:
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
}
}
}
https://stackoverflow.com/questions/58775640
复制