我创建了:
Google工作表作为主模板(" QC_MasterTemplate")在我的根驱动器中具有我想要的所有格式,以便为每个新的销售订单完成核对清单。
收到我们的销售人员将用于提交回复的新客户名称,ID和日期订单的Google表单。
Google表格链接到表格存储新订单回复。我还有一个我的脚本在表单上运行,该表单的新条目收集最后一行条目信息。
我需要帮助:
响应表中的脚本正在尝试触发我的通知电子邮件,表明已经创建了一个新条目,它会细分每个单元格的详细信息,以便在电子邮件的消息中格式化。
我尝试自动执行下一步,将新条目信息用于格式化新的电子表格文件名。 (即" companyname-customerid-orderdate-QCChecklist")此变量易于构建,我遇到的问题是获取响应表脚本以获取非当前活动的电子表格(& #34; QC_MasterTemplate")并使用新文件名在同一个根位置制作副本
我使用的代码是:
function createNewSheet() {
// Get Template Filename
var TemplateFile = DriveApp.getFilesByName("QC_MasterTemplate");
// Get current spreadsheet for information lookup
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// Last row of data to process
var startRow = sheet.getLastRow();
// Starting Column of data to process
var startColumn = 1;
// Number of rows to process
var numRows = 1;
// Number of columns to process
var numColumns = sheet.getLastColumn();
// Get range of cells in columns A:E for all rows with entries
var dataRange = sheet.getRange(startRow, startColumn, numRows, numColumns)
// Get entries for each row in the Range.
var data = dataRange.getValues();
// Set each value to a unique variable
for (i in data) {
var cell = data[i];
var timestamp = cell[0];
var companyname = cell[1];
var customerid = cell[2];
var orderdate = cell[3];
var employee = cell[4];
// Build body of email
var subject = companyname + "-" + customerid + "-" + orderdate + " - QC Checklist";
var message = 'New QC Checklist Form Received \n' +
'\nTimestamp: ' + timestamp +
'\nCompany Name: ' + companyname +
'\nCompany ID: ' + customerid +
'\nOrder Date: ' + orderdate +
'\nEmployee Name: ' + employee;
var recipient = "username@gmail.com";
MailApp.sendEmail(recipient, subject, message);
// Make copy of Template to new filename
subject.makeCopy(TemplateFile);
}
}
我得到的错误是: TypeError:在对象Striker-37188-20150401-QC Checklist中找不到函数makeCopy。 (第39行,文件"代码")
答案 0 :(得分:0)
您可以获取电子表格的父文件夹(QC_MasterTemplate),转到该文件夹并创建新的电子表格文件。
要获取电子表格的根文件夹(QC_MasterTemplate),您可以使用DriveApp中的getParents()方法。
另外,对于创建电子表格,您必须使用create(name)方法。
希望有所帮助!
答案 1 :(得分:0)
名为subject
的变量是一个字符串。没有makeCopy()
方法从字符串生成文件。 Google Apps服务是面向对象的编程。您需要从顶部开始,然后按照方法进行操作。有makeCopy()
方法:
但你不能在任何事情上使用这种方法。对于该特定文档,makeCopy()
方法仅适用于文件类。所以你首先需要获得一个文件的引用。
您可以通过多种方式制作模板副本。
一种选择是使用Class DriveApp。
function makeCopyOfTemplate() {
var templateID = 'The File ID of the File'; //Template File ID
var workingCopy = DriveApp.getFileById(templateID).makeCopy();
var workingFileID = workingCopy.getId();
var fileNameToUse = 'CustomerABC Todays Date';
//Set the file name of the copy file
workingCopy.setName(fileNameToUse);
//Open the new copy of the Template
var workingCopyOfTemplateFile = SpreadsheetApp.openById(workingFileID);
//To Do: Inject copy with data
};
答案 2 :(得分:0)
也可以这样使用sourceMe
方法吗?
.makeCopy(name, destination)