从GAS

时间:2015-07-20 14:30:12

标签: google-apps-script google-sheets google-form

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

编辑响应包含时间戳和编辑的信息,时间戳与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 ...可能会在传递Date字符串而不是实际的时间戳进入时抛弃它,但我不这么认为。我会仔细检查它并在此期间调试它,如果我回答我自己的问题,我会回来修理它。

1 个答案:

答案 0 :(得分:0)

嗯。听起来像是同样的行为。我决定做的是匹配记录的时间戳,但你必须抓住第3行代码中的标记,因为旧标记会被快速覆盖。我只是从newTime中减去oldTime,离开了一个5秒的窗口来匹配它们,这很有效。我还没有机会发布它,因为我刚刚在一小时前完成了新的提交,编辑和失败的写作。