我正在开发一个与Google表单捆绑在一起的Google Apps脚本。 当用户提交回复时,我需要发送一封包含提交数量的电子邮件(即该用户是提交表单的第n个人)。
我没有在API中找到可以执行相同操作的方法。我提出了2个解决方法,但它们不起作用:
我尝试通过所有表单回复并检查此响应的ID是否匹配,然后记录索引。
function onFormSubmit(e)
{
var formResponses = e.source.getResponses();
for(var i = 0; i < formResponses.length; i++)
{
if(e.response.getId() == formResponses[i].getId())
{
Logger.log("Find it! Your number of submission is " + (i + 1));
break;
}
}
Logger.log("Cannot find response in form!");
}
但是,我很惊讶地发现formResponses
不包括用户刚提交的响应(因为我总是得到Cannot find response in form!
消息)。我猜Google在执行此功能后会将此响应插入到表单中。
然后我提出了另一个想法。知道用户刚提交的响应不包含在表单中,为什么不只计算表单内的响应数量并添加1?
function onFormSubmit(e)
{
var formResponses = e.source.getResponses();
Logger.log("Your number of submission is" + (formResponses.length + 1));
}
问题是,如果超过1个用户同时提交表单,他们可能会得到错误的号码。我想原因是用户可能会得到未更新的号码,因为另一个用户已经提交了尚未插入表单的响应。
我想知道是否有正确的方法来做到这一点。非常感谢你。