Google app engine e、 response.getId().getEditResponseUrl();在谷歌应用程序中,脚本不起作用

Google app engine e、 response.getId().getEditResponseUrl();在谷歌应用程序中,脚本不起作用,google-app-engine,google-apps-script,google-sheets,google-forms,Google App Engine,Google Apps Script,Google Sheets,Google Forms,我制作了一个工具,用于存储票号和其他团队成员传递的一些细节。在这个过程中,我使用了一个表格来提交移交和谷歌电子表格作为数据库。我还想通知团队成员,并由他们实现数据编辑,因此我编写了如下脚本 function formSubmitReply(e) { var timeStamp = e.values[0]; var sendTo = e.values[1]; var ticket = e.values[2]; var description = e.values[3]; var editResp

我制作了一个工具,用于存储票号和其他团队成员传递的一些细节。在这个过程中,我使用了一个表格来提交移交和谷歌电子表格作为数据库。我还想通知团队成员,并由他们实现数据编辑,因此我编写了如下脚本

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发送给其他人,是否有任何方法允许仅编辑单个问题,例如,问题票号、描述、状态我希望用户仅更改为状态,其余应禁用。我不知道谷歌表单中有这样的功能。

仅仅因为没有错误并不意味着你不能排除故障。一个好的开始是看看执行记录

不管怎样,问题是您混合了可用的事件对象。根据您的描述,这条线与:

var editResponseURL= e.response.getId().getEditResponseUrl();
我假设此脚本附加到电子表格。但是,对于电子表格,如果将脚本附加到表单,您会发现

这里一个可能的解决方案是重写表单的脚本,因为表单实际上存储了响应,您不需要电子表格来存储数据,除非您希望能够读取单个响应

您可以在FormResponse页面上找到一个类似的示例,它循环遍历对表单的所有响应并记录它们的值。从那里,您可以添加脚本中发送值的部分

在使用表单时,为了获得时间戳,您可以使用该方法,我认为该方法比电子表格时间戳更可靠(我认为工作表上的时间戳是它写入工作表的时间,而不是它提交到表单的时间。通常它们在几分钟/秒内是相同的,但并不总是相同)


关于获取只允许您编辑某些响应的编辑URL,不,这是不可能的。我想不出有什么办法可以解决这个问题,我怀疑是否存在。

一切正常,但无法获得时间戳值。我使用了索引号为0的itemResponses[],0现在定义了以前用于引用时间戳的sendTo。另外,如果我可以像我在主要问题中所问的那样,禁用谷歌表单中的一些特定问题,我也会给出建议。抱歉,我忘了在我的原始答案中包含这些问题。我对它进行了编辑以解决您的两个问题。