使用FormResponse类时,将根据检索响应的方式为响应返回意外的Id

时间:2014-03-03 17:32:07

标签: forms google-apps-script

我希望之前有人看过这个,我正在使用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

1 个答案:

答案 0 :(得分:0)

我在我的一个表单上测试了您的代码,它看起来像是有意为之。我的假设是你删除了你想要检索的答案,但你仍然可以通过脚本得到它(我不知道原因,我想的缓存)。
我可以建议你检索编辑网址,这样你就会发现它不是同一个答案(修改它并检查表单答案)。

Logger.log(formResponses[i].getEditResponseUrl());

顺便说一下,在您发布的脚本中,您忘记了:

var form = FormApp.getActiveForm();

或等效的(无法在不添加该行的情况下运行脚本)