Javascript 由表单提交触发的Google脚本有时不会';行不通
我有一个脚本,当它被发送时,从谷歌表单中读取答案。脚本绑定到一个电子表格,该表格捕获所有答案。该脚本生成包含一些信息的PDF,并通过GmailApp将其发送给用户,然后将PDF存储在驱动器文件夹中。但有时脚本不起作用。答案始终存储在电子表格中,但尽管如此,脚本不会运行。我已经检查了“执行记录”,但它包含关于上次成功执行的信息 如何保证脚本始终运行 有人能解释为什么会这样吗 密码Javascript 由表单提交触发的Google脚本有时不会';行不通,javascript,google-apps-script,google-sheets,google-forms,eventtrigger,Javascript,Google Apps Script,Google Sheets,Google Forms,Eventtrigger,我有一个脚本,当它被发送时,从谷歌表单中读取答案。脚本绑定到一个电子表格,该表格捕获所有答案。该脚本生成包含一些信息的PDF,并通过GmailApp将其发送给用户,然后将PDF存储在驱动器文件夹中。但有时脚本不起作用。答案始终存储在电子表格中,但尽管如此,脚本不会运行。我已经检查了“执行记录”,但它包含关于上次成功执行的信息 如何保证脚本始终运行 有人能解释为什么会这样吗 密码 //ID del模板 var docTemplate=“此处的模板ID”; //科皮亚的名字 var docName=
//ID del模板
var docTemplate=“此处的模板ID”;
//科皮亚的名字
var docName=“biovenCIP”;
//康斯坦西亚将军和环境保护委员会主要负责人
函数onFormSubmit(e){
//莱茵多达托斯德尔公式
var d=新日期();
var注册日期=e.values[0];
var first_name=e.values[1];
var second_name=e.values[2];
var first_lastname=e.values[3];
var second_lastname=e.values[4];
var文件类型=e.values[5];
var文件编号=e.值[6];
var email_address=e.values[7];
var占用=e.值[8];
var类别=e.价值[9];
var付款数量=e.值[10];
var付款日期=e.价值[11];
//Inicializando mensaje opcional
var occupation_message=“”;
//诺姆布雷将军
if(第二个名称.localeCompare(“”)=0){
第二个名称=“第二个名称”;
}
if(second_lastname.localeCompare(“”)=0){
second_lastname=“”+second_lastname;
}
var full\u name=第一名+第二名+“”+第一名+第二名;
全名=全名。替换(/\s+/g,“”);
//通用公司模板
var copyID=DocsList.getFileById(docTemplate).makeCopy(docName+'''.'+文档号).getId();
var copyDoc=DocumentApp.openById(copyID);
var copyBody=copyDoc.getActiveSection();
//重新采样文本模板
copyBody.replaceText('keyDate',注册日期);
copyBody.replaceText('keyFullName',全名);
copyBody.replaceText('keyIDType',文档类型);
copyBody.replaceText('keyIDNumber',文档编号);
copyBody.replaceText('keyEmail',电子邮件地址);
copyBody.replaceText('keycocculation',occulation);
转辙机(占用){
案例“Estudiante de pregrado”:
职业信息=“(呈现carnet el primer día del evento)”;
var付款价值=100.00;
打破
案例“研究生院”:
职业信息=“(呈现carnet el primer día del evento)”;
var付款价值=150.00;
打破
“专业”案例:
var付款价值=200.00;
打破
}
copyBody.replaceText('keyOMessage',occupation_message);
copyBody.replaceText('keyCategory',category);
copyBody.replaceText('keyPaymentNum',付款编号);
copyBody.replaceText('keyPaymentDate',payment_date');
copyBody.replaceText('keyPayment',payment\u-worth)
copyDoc.saveAndClose();
//Convertir temporalmente a PDF
var pdf=DocsList.getFileById(copyID.getAs(“application/pdf”);
//附件PDF y enviado correo ELECTROónico
var reply_email=”info@bioven.org.ve";
var bcc_电子邮件=”congresobioven@gmail.com";
var subject=“Constancia de inscripción-BIOVEN 2015”;
var body=“Estimado”+全名+“,
在2015年,一场由康斯坦西亚德·康斯坦西亚德·康斯坦西亚德·康斯坦西亚德·维尼佐拉诺·比奥芬(Venezolano de BioingenieríA)-比奥芬(BIOVEN)议会发起的电力改革,在2015年,比奥芬市政府组织委员会(Commitéde deberápresentar el primer díA del Congresso durante la verificación de registro)召开的会议上,
;
GmailApp.sendmail(电子邮件地址、主题、正文,{姓名:'Congreso BIOVEN 2015',密件抄送:密件抄送:电子邮件,htmlBody:body,回复:回复电子邮件,附件:pdf});
//Guardando PDF en Drive
var folder_id=“此处的文件夹id”;
DriveApp.getFolderById(文件夹id).createFile(pdf);
//博兰多·阿奇沃医生
DocsList.getFileById(copyID).setTrashed(true);
}
尝试在代码中更高的位置定义变量支付值
:
function onFormSubmit(e){
//Leyendo datos del formulario
var d = new Date();
//Other var definitions
var payment_worth = 0;
初始值为零。目前,如果您的案例/选择失败,变量payment\u-worth
将未定义
只是个主意,不知道是不是个好主意
案例选择如下所示:
switch(occupation){
case "Estudiante de pregrado":
occupation_message = "(presente carnet el primer día del evento)";
payment_worth = 100.00;
break
case "Estudiante de postgrado":
occupation_message = "(presente carnet el primer día del evento)";
payment_worth = 150.00;
break
case "Profesional":
payment_worth = 200.00;
break
}
我的解决方案是制作一个Webapp并发布它,保证100%的发送都能正常工作。@Kriggs那么,这是一个正常的问题吗?@Kriggs我该怎么做?在脚本编辑器>资源>触发器中,您可以将通知设置为“立即发送”(或类似的;-),这将向您发送一个错误通知以及有关所发生情况的一些信息。或者,您可以将代码包装在一个try/catch中,当“try”失败时,它将向您发送消息。脚本可能会运行,但只是失败。作为Web应用发布不会更改任何内容。也许您可以添加一个无条件邮件发送,以检查它是否运行
switch(occupation){
case "Estudiante de pregrado":
occupation_message = "(presente carnet el primer día del evento)";
payment_worth = 100.00;
break
case "Estudiante de postgrado":
occupation_message = "(presente carnet el primer día del evento)";
payment_worth = 150.00;
break
case "Profesional":
payment_worth = 200.00;
break
}