2015-07-20 134 views
0

我正在使用脚本从表单提交中提取响应ID,以便用户编辑响应时,我可以将编辑与初始响应进行匹配。我的脚本创建了提交的每个表单内容的.pdf,但当用户编辑响应时,它会创建一个仅包含编辑数据的新表单,而不会将其链接到初始响应。GAS中Response.getId()返回的奇怪结果

编辑响应包含时间戳和编辑后的信息,时间戳与Response.getId(timestamp),iirc一起使用,并返回表单提交的ID。然而,我有时会得到一个非常奇怪的回报,我不知道它是从哪里来的。响应比典型的响应ID(10-12字母数字而不是30+)要短得多。我会尝试用代码来回顾并编辑这个问题,但此刻我正在登录不同的日志,因此我必须交换并复制代码并返回。运行单元测试并没有真正的帮助,因为我大部分时间都能得到预期的结果。这只是一个偶尔的呃逆,但我必须找到不正确的信息来自哪里。

function getResponseId(timestamp){ 
    var form = FormApp.openById('<formID>'); 
    if(typeof(timestamp) != 'number'){ 
    timestamp = new Date(timestamp); 
    } 
    var responses = form.getResponses(timestamp); 
    var entryId = responses[0].getId(); 

    return entryId; 
} 

就是这样。我想if(typeof ...)可能会抛出一些事情,如果它传递的是日期字符串而不是实际的入口时间戳,但我不这么认为,我会仔细检查它并在此期间进行调试,如果我回答我自己的问题,我会回来修复它

+0

你有机会看看[这个](http://stackoverflow.com/questions/2250960) 7/- 被提交的-ID-的-A-formresponse-时-A-响应是,不同-时,您列表)?您是否尝试使用onFormSubmit类似的函数获取ID,如上面的链接所述? – pointNclick

回答

0

嗯,听起来像是一样的行为,我决定做的是匹配记录的时间戳,但你必须抓住第三行代码中的邮票,因为旧邮票被快速覆盖,我只是从newTime中扣除了oldTime,留下了5秒的窗口来匹配它们,而且工作正常,我还没有机会发布它,因为我刚刚在一小时前为新的提交,编辑和失败写入工作。

+0

这是我最后做的。我想我以5秒或类似的方式进行,因为我使用的表格每天可能会收到一些提交内容。如果得到的不仅仅是这些,那是因为同一用户输入了多个条目,并且创建新表单需要超过5秒的时间。 – thoughtcrime