我已经制作了一个工具,可以存储票号以及由其他团队成员发送的一些细节 . 在该过程中,我使用表单提交移交和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表单中有这样的功能 .
1 回答
仅仅因为没有错误并不意味着你无法排除故障 . 一个好的开始是查看执行记录 .
无论如何,问题是你正在混合可用的事件对象 . 根据您的描述,这是与以下行:
我假设此脚本附加到电子表格 . 但是,对于电子表格e.response is not a usable field,如果您要将脚本附加到表单,您会发现e.values are not a usable field .
这里一个可能的解决方案是重写表单的脚本,因为表单实际存储响应,您不需要电子表格为您存储数据,除非您希望能够读取单个响应 .
您可以在FormResponse页面上找到一个类似的示例,它循环遍历表单的所有响应并记录它们的值 . 从那里,您可以添加脚本中用于邮寄值的部分 .
使用表单时,为了获得时间戳,您可以使用方法.getTimestamp(),这比我认为电子表格时间戳更可靠(我相信表单上的时间戳是写入工作表的时间,而不是它被提交到表格的时间 . 通常它们在几分钟/秒内是同一时间,但并非总是如此 .
关于获取仅允许您编辑某些响应的编辑URL,这是不可能的 . 没有解决这个问题,我怀疑是否存在 .