如何从时间戳获得响应

时间:2015-12-12 04:01:08

标签: google-apps-script

我的目标是让最终用户将表单中的时间戳粘贴到dialoge框中,它将获得具有该特定时间戳的响应结果。我正在处理的脚本绑定到表单。

我可以从时间戳中获得结果,但是在构建函数时,我发现response.getTimestamp()将产生与表单中的时间戳不同的结果。

我想知道是否有人想要一个解决方法,有人可以从表单中粘贴时间戳,并在表单脚本中粘贴相应的结果。

这是我认为应该有效的代码,但不是

function getCorrectTimestamp(t){
 t = "12/11/2015 10:28:50";
// t = "Fri Dec 11 2015 10:28:49 GMT-0500 (EST)"; 
// t = "Fri Dec 11 2015 10:29:28 GMT-0500 (EST)"; 
// t = "Fri Dec 11 2015 10:29:12 GMT-0500 (EST)";  
 var n = 0;
 var td = new Date(t); 
 var form = FormApp.getActiveForm(); 
 var r = form.getResponses(td);
 var rt = r[n].getTimestamp();
 var name = r[n].getItemResponses()[0].getResponse(); 

  Logger.log(t);

}

2 个答案:

答案 0 :(得分:0)

表单中仍然没有直接链接到表单结果,但下面的代码似乎足够可靠。

function sendOtherResponse(ts){

//  ts = "12/14/2015 11:12:59";
//  ts = "12/14/2015 11:13:05";
//  ts = "12/14/2015 11:13:10";
  ts = "12/14/2015 11:13:16";

 // get actual date from paste 
 var form = FormApp.getActiveForm();
 var destId = form.getDestinationId();
 var sheet = SpreadsheetApp.openById(destId);
 var data = sheet.getDataRange().getValues();
 var dataD = sheet.getDataRange().getDisplayValues(); 
 var date = ""; 

  for(i in dataD){
   var tsDataD = dataD[i][0];
    if (tsDataD == ts){
     date = data[i][0];
     break;
    } 
  }
  var thisResponse = form.getResponses(date)[0];
  var test = thisResponse.getItemResponses()[0].getResponse();
  Logger.log(test);
}

答案 1 :(得分:0)

我知道这是非常古老的,但我想我会为需要将响应表中的时间戳与相同的表单响应时间戳相关联的任何人做出贡献。查看我的代码片段:

var timestamp = formResponses[0].getTimestamp().toString();
var sstimestamp = ss.getRange('A2').getValue().toString();

if (timestamp == sstimestamp){
  flag3 = 1;
}


Logger.log('Form Time stamp: ' +timestamp +'   '+typeof timestamp)
Logger.log('Sheet Time stamp: ' +sstimestamp +'   '+typeof sstimestamp)
Logger.log('Flag for equal time stamps detected:  ' +flag3)

这是记录器输出:

<块引用>

上午 11:10:25 信息表时间戳:2020 年 7 月 2 日星期四 13:59:24 GMT+0200 (南非标准时间)字符串

上午 11:10:25 信息表时间戳:2020 年 7 月 2 日星期四 13:59:24 GMT+0200 (南非标准时间)字符串

上午 11:10:25 检测到相同时间戳的信息标志:1

我的响应表中的单元格 A2 显然包含与第一个表单响应时间戳对应的时间戳。 请注意,我在工作表上的 A2 中实际看到的是:02/07/2020 13:59:25

因此,您需要使用代码从工作表中获取数据,以便将其转换为正确的格式以与表单进行比较。另请注意,当您获得该值时,它被识别为类型对象,然后比较它们不起作用。这就是为什么我必须先使用 .toString() 将其转换为字符串,然后比较它们才有效。