我制作了一个工具,用于存储票号以及由其他团队成员发送的一些详细信息。在该过程中,我使用表单提交移交和Google电子表格作为数据库。此外,我想通知团队成员以及实施他们的编辑数据,所以我写了一个脚本如下。
function formSubmitReply(e)
{
var timeStamp = e.values[0];
var sendTo = e.values[1];
var ticket = e.values[2];
var description = e.values[3];
var editResponseURL= e.response.getId().getEditResponseUrl();
logger.log(editResponseURL);
MailApp.sendEmail(sendTo,
"New Handover",
ticket +" handovered to you at "+
timeStamp +"\n\nDescription:"+
description +
"\n\nKindly check it using the below link\n\n"+
editResponseURL +"",
{name:"Handover Mail"});}
在上面的代码中,当我删除下面的代码时,一切正常
var editResponseURL= e.response.getId().getEditResponseUrl();
没有错误,这就是我无法排除故障的原因。此外,我无法记录详细信息。请建议我保存URL的方法。 现在,如果我成功保存URL并通过URL发送给其他人有任何方法只允许编辑一个问题,例如,问题票号,描述,状态我希望用户只改变状态和休息应该被禁用。我不知道Google表单中有这样的功能。
答案 0 :(得分:3)
只是因为没有错误并不意味着你无法排除故障。一个好的开始是查看执行记录。
无论如何,问题在于您正在混合可用的事件对象。根据您的描述,它是:
var editResponseURL= e.response.getId().getEditResponseUrl();
我假设此脚本已附加到电子表格中。但是,对于电子表格e.response is not a usable field,如果您要将脚本附加到表单,则会发现e.values are not a usable field。
这里的一个可能的解决方案是重写表单的脚本,因为表单实际存储响应,您不需要电子表格为您存储数据,除非您希望能够读取单个响应。
您可以在FormResponse页面上找到一个类似的示例,它循环遍历表单的所有响应并记录其值。从那里,您可以添加脚本中用于邮寄值的部分。
使用表单时,为了获取时间戳,您可以使用方法.getTimestamp(),这比我认为电子表格时间戳更可靠(我相信时间戳工作表是写入工作表的时间,而不是提交到表单的时间。通常它们是在几分钟/秒内的同一时间,但并非总是如此。
关于获取仅允许您编辑某些回复的编辑网址,这是不可能的。没有解决这个问题,我怀疑是否存在。