【发布时间】:2015-07-10 15:53:27
【问题描述】:
我想知道是否有人可以帮助我。我已经编写了这段代码,它应该执行以下工作流程:
用户填写表单,表单响应记录在 Excel 表中并进行各种计算,最终值附加到模板 pdf 中,并且此 pdf 通过电子邮件发送给用户。
脚本会执行所有这些操作,但只有在我手动单击“运行”时才会执行,而我希望它在提交表单时执行,但我不明白为什么它不执行。
我会添加我的触发器的屏幕截图,但我不能,因为我还没有 10 声望;但我的触发器设置如下:
运行:onFormSubmit 事件:来自电子表格,在表单提交时
我将在下面粘贴我的代码,有人知道为什么它可能不起作用吗?任何帮助将不胜感激。
//Set out global variables
var docTemplate = ("1Ff3SfcXQyGeCe8-Y24l4EUMU7P9TsgREsAYO9W6RE2o");
var docName=("Calculations");
function onFormSubmit(e){
//Variables
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Sheet3"));
var totalOutstandingPrincipalDebt = SpreadsheetApp.getActiveSheet().getRange("G25").getValue();
var totalOutstandingInterest = SpreadsheetApp.getActiveSheet().getRange("H25").getValue();
var totalOutstandingCompensation = SpreadsheetApp.getActiveSheet().getRange("I25").getValue();
var dailyInterestRate = SpreadsheetApp.getActiveSheet().getRange("J25").getValue();
var grandTotal = SpreadsheetApp.getActiveSheet().getRange("K25").getValue();
var userEmail = SpreadsheetApp.getActiveSheet().getRange("H24").getValue();
//Template Info
var copyId=DriveApp.getFileById(docTemplate).makeCopy(docName+' for '+userEmail).getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
//Putting the data into the file
copyBody.insertParagraph(1,'Total Outstanding Principal Debt: £' + totalOutstandingPrincipalDebt);
copyBody.insertParagraph(2,'Total Outstanding Interest: £'+ totalOutstandingInterest );
copyBody.insertParagraph(3,'Total Outstanding Compensation: £'+ totalOutstandingCompensation);
copyBody.insertParagraph(4,'Grand Total: £' + grandTotal);
copyBody.insertParagraph(5,'Daily Interest Rate: £'+ dailyInterestRate);
copyDoc.saveAndClose();
//email pdf document as attachment
var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
var subject = "Calculations";
var body = "Thank you very much for using our online calculator. Please find your results attached.";
MailApp.sendEmail(userEmail, subject, body, {htmlBody: body, attachments: pdf});
//Deletes temporary Document
DriveApp.getFileById(copyId).setTrashed(true);
}
【问题讨论】:
-
您需要经历一个消除过程。创建另一个函数,它只向日志输出一些内容。
Logger.log('it ran!);为该新功能创建一个新触发器,然后提交表单,并查看 VIEW 菜单下的 LOGS。如果可行,请开始将代码行转移到新函数中,并查看它是否在某个时候停止工作。如果新的触发器根本不起作用,那么它与代码无关。
标签: javascript forms google-apps-script triggers google-sheets