从 GAS 中的 Response.getId() 返回的奇怪结果

Strange results returning from Response.getId() in GAS

我正在使用脚本从表单提交中提取响应 ID,以便在用户编辑他们的响应时,我可以将编辑与初始响应相匹配。我的脚本为提交的每个表单的内容创建一个 .pdf,但是当用户编辑回复时,它会创建一个仅包含编辑后数据的新表单,而不将其链接到初始回复。

编辑响应包含时间戳和编辑信息,时间戳与Response.getId(timestamp)、iirc、returns表单提交ID一起使用。然而,我有时会得到一个很奇怪的return,而且我不知道它是从哪里来的。响应比典型的响应 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... 如果它传递的是 Date 字符串而不是实际的条目时间戳,它可能会抛出问题,但我不这么认为。我会仔细检查它并同时调试它,如果我回答了我自己的问题,我会回来解决它。

嗯。听起来像是相同的行为。我决定做的是匹配记录的时间戳,但你必须在第 3 行代码中获取时间戳,因为旧时间戳会很快被覆盖。我只是从 newTime 中减去 oldTime,留下 5 秒 window 来匹配它们,并且成功了。我只是还没有机会 post 它,因为我刚刚在一个小时前开始处理新的提交、编辑和失败的写入。