我希望之前有人看过这个,我正在使用Google表单,并且在提交时,使用Google Apps脚本将响应ID存储在单独的电子表格中,以便将更多元数据存储在future(从onSubmit事件响应e.response.getId()
中的方法获得的Id)。首次提交Google表单后,我将响应ID记录在新表格中。
我可以通过form.getResponse(responseIdStoredInSheet)
加载响应,但是,当我循环查看form.getResponses()
返回的响应并在返回的那些FormResponses上调用.getId()
时,ID会稍微改变一下。我已经在文档和网上寻找了一个下午为什么会这样,但无济于事。
function testResponseIds()
{
var responseIdStoredInSheet = 'ChMxNzM4MDQzNzQ5MjQyNDc0Njg4EAA';
//only response in the form
var formResponse = form.getResponse(responseIdStoredInSheet);
//outputs as expected above - ChMxNzM4MDQzNzQ5MjQyNDc0Njg4EAA
Logger.log(formResponse.getId());
//loop through all responses (only above response is present)
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++)
{
//Outputs slightly different Id - ChMxNzM4MDQzNzQ5MjQyNDc0Njg4EJ2kvMHLzsOvdg
Logger.log(formResponses[i].getId());
}
}
上面记录的输出:
[14-03-03 17:12:51:259 GMT] ChMxNzM4MDQzNzQ5MjQyNDc0Njg4EAA
[14-03-03 17:12:51:279 GMT] ChMxNzM4MDQzNzQ5MjQyNDc0Njg4EJ2kvMHLzsOvdg
答案 0 :(得分:0)
我在我的一个表单上测试了您的代码,它看起来像是有意为之。我的假设是你删除了你想要检索的答案,但你仍然可以通过脚本得到它(我不知道原因,我想的缓存)。
我可以建议你检索编辑网址,这样你就会发现它不是同一个答案(修改它并检查表单答案)。
Logger.log(formResponses[i].getEditResponseUrl());
顺便说一下,在您发布的脚本中,您忘记了:
var form = FormApp.getActiveForm();
或等效的(无法在不添加该行的情况下运行脚本)