Javascript 在Google Forms中为审批工作流创建脚本
我正试图通过谷歌表单为请假时间开发一个审批工作流。一个附加组件可以解决这个问题,但我的公司对此很奇怪,所以我试图生成一个脚本来执行这个功能。我的doGet函数有太多的错误,我正要放弃 我试着用谷歌搜索每个错误,看看如何修复它。我试着看看是否有人已经编写了脚本,但没有成功。我想要的是该人在表单之外提交他们的请求。向主管发送一封电子邮件,其中包含批准/拒绝请求的链接,然后将电子邮件发送回原始请求者,并附上红外光谱结果 我忘了添加。这是我插入到google表单的google工作表中的脚本,它附在google表单上,而不是表单本身。我似乎一直收到的错误是“TypeError:无法从undefined读取属性“approval”Javascript 在Google Forms中为审批工作流创建脚本,javascript,google-apps-script,google-sheets,form-submit,Javascript,Google Apps Script,Google Sheets,Form Submit,我正试图通过谷歌表单为请假时间开发一个审批工作流。一个附加组件可以解决这个问题,但我的公司对此很奇怪,所以我试图生成一个脚本来执行这个功能。我的doGet函数有太多的错误,我正要放弃 我试着用谷歌搜索每个错误,看看如何修复它。我试着看看是否有人已经编写了脚本,但没有成功。我想要的是该人在表单之外提交他们的请求。向主管发送一封电子邮件,其中包含批准/拒绝请求的链接,然后将电子邮件发送回原始请求者,并附上红外光谱结果 我忘了添加。这是我插入到google表单的google工作表中的脚本,它附在goo
功能发送电子邮件(e){
var email=e.values[1];
var supervisoremail=e.values[2];
var BeginDate缺席=e.值[3];
var EndDate缺席=e.values[4];
变量url=
'https://script.google.com/a/mesd.k12.or.us/macros/s/AKfycbwvm63UG8X9Wqdkt7yxUFKhvMXu58yvbeY2udJVJKmheIuagQlB/exec';
var approve=url+'&approve=true'+'&reply='+电子邮件;
var deny=url+'&approval=false'+'&reply='+email;
var html=“”+
“请查看/
”+
BeginDate缺席+”:“+EndDate缺席+”
”+
“
”+
“
”+
"" :
MailApp.sendEmail(“lparga@mesd.k12.or.us“,“批准请求”,“什么没有html?”,{htmlBody:html});
}
函数doGet(e){
var answer=(e.parameter.approval='true')?“您的请求已被批准”:“您的请求已被拒绝”;
MailApp.sendmail(e.parameter.reply,“您的请假申请”,
你的上司说:“+回答);
var app=UiApp.createApplication();
app.add(app.createHTML('一封电子邮件被发送到'+e.parameter.reply+'说:'+answer+'');
返回应用程序;
}
当前错误表明my
doGet
函数上的my reply参数未定义。要通过Google Apps脚本中的GET呈请访问元素,可以使用。这是使用e.reply
而不是e.parameter.reply
另一方面,我们需要重写语法以使其运行。您的最终代码应该类似于以下内容:
function doGet(e) {
var answer = (typeof e.approval == 'true' ? 'Your request has been approved' : "Your request has been denied");
MailApp.sendEmail(e.reply, "Your leave request", "Your supervisor said: " + answer);
var app = UiApp.createApplication(); // DEPRECATED
app.add(app.createHTML('<h2>An email was sent to ' + e.reply + 'saying: ' + answer + '</h2 > '));
}
函数doGet(e){
var answer=(typeof e.approval='true'?'您的请求已被批准':“您的请求已被拒绝”);
MailApp.sendmail(例如回复“你的请假请求”,“你的主管说:”+回答);
var app=UiApp.createApplication();//已弃用
app.add(app.createHTML('向'+e.reply+'发送了一封电子邮件,上面写着:'+answer+'');
}
我希望这对您有用。请随时向我们提供更多信息以获得进一步帮助。要通过谷歌应用程序脚本中的获取请求访问元素,您可以使用。这是使用
e.reply
而不是e.parameter.reply
另一方面,我们需要重写语法以使其运行。您的最终代码应该类似于以下内容:
function doGet(e) {
var answer = (typeof e.approval == 'true' ? 'Your request has been approved' : "Your request has been denied");
MailApp.sendEmail(e.reply, "Your leave request", "Your supervisor said: " + answer);
var app = UiApp.createApplication(); // DEPRECATED
app.add(app.createHTML('<h2>An email was sent to ' + e.reply + 'saying: ' + answer + '</h2 > '));
}
函数doGet(e){
var answer=(typeof e.approval='true'?'您的请求已被批准':“您的请求已被拒绝”);
MailApp.sendmail(例如回复“你的请假请求”,“你的主管说:”+回答);
var app=UiApp.createApplication();//已弃用
app.add(app.createHTML('向'+e.reply+'发送了一封电子邮件,上面写着:'+answer+'');
}
我希望这对你有用。请不要犹豫,提供更多信息,以便进一步帮助我们
我经常遇到的错误是“TypeError:无法从undefined读取属性“approval”
发生此错误是因为代码创建的URL不包含?
。此字符是显示URL的查询字符串部分的起始位置所必需的
替换
var approve = url + '&approval=true' + '&reply=' + email;
var deny = url + '&approval=false' + '&reply=' + email;
借
代码中的另一个问题是UiApp的使用(因为它已被弃用和退役)。相反,您应该使用HTML服务
参考资料
?
。此字符是显示URL的查询字符串部分的起始位置所必需的
替换
var approve = url + '&approval=true' + '&reply=' + email;
var deny = url + '&approval=false' + '&reply=' + email;
借
代码中的另一个问题是UiApp的使用(因为它已被弃用和退役)。相反,您应该使用HTML服务
参考资料
function sendEmail() {
Logger.log("[METHOD] sendEmail");
var values = SpreadsheetApp.getActiveSheet(); // ingresa a la planilla
var row = values.getLastRow();
var fecha = values.getRange(row, 1).getValue();
var email = values.getRange(row, 2).getValue();
var div = values.getRange(row, 3).getValue();
var section = values.getRange(row, 4).getValue();
var id = values.getRange(row, 5).getValue();
var nom = values.getRange(row, 6).getValue();
var tipo = values.getRange(row, 8).getValue();
var val_tipo = values.getRange(row, 9).getValue();
var origen = values.getRange(row, 10).getValue();
var riesgo = values.getRange(row, 11).getValue();
var oport = values.getRange(row, 12).getValue();
var conform = values.getRange(row, 13).getValue();
var correo_owner = values.getRange(row, 14).getValue();
var emailRecipients = correo_owner;
var urlform = "https://docs.google.com/forms/d/e/(put here de ID's form)/viewform?formkey=unique_number&entry_(put here the entry number of to prefill form)="+id+"&entry_(put here the entry number of to prefill form)="+val_tipo+"&entry_(put here the entry number of to prefill form)="+email;
var emailSubject = "Ingreso de registro de no conformidad/oportunidad de mejora n° "+id+" por " + email ;
// Cuerpo del correo
var emailBody = "<h3>Ingreso de registro reportado por "+nom+":</h3><hr /> \
<p> \
<h3 style='line-height:70%'>Ingreso de No conformidad/oportunidad de mejora <br />
\
<span style='font-size:50%'>("+fecha+")</span></h3> \
</p><hr /> \ <p> \
<strong>Tipo de reporte:</strong><br /> \
"+tipo+" \
</p>\ <p> \
<strong>Origen de Hallazgo:</strong><br /> \
"+origen+" \
</p> <p> \
<strong>Descripción de 'No conformidad':</strong><br /> \
"+conform+" \
</p> \ <p> \
<strong>Descripción de Oportunidad de Mejora:</strong><br /> \
"+oport+" \
</p>\ <p> \
<strong>División:</strong><br /> \
"+div+" \
</p>\ <p> \
<strong>Sección:</strong><br /> \
"+section+" \
</p>\ <p> \
<strong>Favor aprobar, rechazar o derivar el requerimiento en el siguiente link:
</strong><br />\
"+urlform+"\
</p>" ;
MailApp.sendEmail({
to: emailRecipients,
cc: "mail1"+","+"mail2",// + "mail3",
subject: emailSubject,
htmlBody: emailBody
});
函数sendmail(){
Logger.log(“[方法]发送电子邮件”);
var values=SpreadsheetApp.getActiveSheet();//ingresa a la planilla
var row=values.getLastRow();
var fecha=values.getRange(第1行).getValue();
var email=values.getRange(第2行).getValue();
var div=values.getRange(第3行).getValue();
var section=values.getRange(第4行).getValue();
var id=values.getRange(第5行).getValue();
var nom=values.getRange(第6行).getValue();
var tipo=values.getRange(第8行).getValue();
var val_tipo=values.getRange(第9行).getValue();
var origen=values.getRange(第10行).getValue();
var riesgo=values.getRange(第11行).getValue();
var oport=values.getRange(第12行).getValue();
var conform=values.getRange(第13行).getValue();
var correo_owner=values.getRange(第14行).getValue();
var emailRecipients=correo_所有者;
var urlform=”https://docs.google.com/forms/d/e/(将de ID表格放在这里)/viewform?formkey=唯一的\编号和条目\将to预填充表格的条目编号放在这里)=“+ID+”和条目\将