2012-03-11 54 views
1

我是新来的谷歌应用程序脚本,我无法从UiApp窗体解析日期字符串。在这种情况下,我正在编写一个脚本,允许用户过滤指定日期范围内的时间戳电子表格。使用谷歌应用程序脚本解析日期字符串

我的问题是,当在传统的传递日期字符串(从dateFromField命名为文本框)下面的代码返回一个无效的日期对象的JavaScript格式YYYY,M,D(即2012,1,2为2012年2月2日):

function dateFilter(e) { 
    var fromDate = new Date(e.parameter.dateFromField); 
} 

我检查了e.parameter.dateFromField正确返回给定的字符串(Logger.log(e.parameter.dateFromField);返回2012,1,2),并且它的类型是字符串(而不是对象)。

但是,如果我键入日期字符串转换成直接的功能,即:

function dateFilter(e) { 
    var fromDate = new Date(2012,1,2); 
} 

我得到有效的约会对象。我不明白这两个例子之间的区别 - 据我所知他们是相同的;在这两种情况下,字符串2012,1,2都被传递给new Date函数。我明显错过了一些简单的东西 - 谁能告诉我什么?

回答

5

当您手动键入它时,实际上传递了3个数字参数,而不是带逗号分隔数字列表的字符串。

我想你可以在传球之前分开你的参数,例如,

var dateParts = e.parameter.dataFromField.split(','); 
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]); 
+0

我知道我错过了一些简单的事情,但那只是令人尴尬。谢谢你放纵我 - 你的解决方案工作得很好。 – Nick 2012-03-13 21:24:27

2

我建议在UiApp中使用DateBox和DatePicker类而不是文本框。他们返回一个实际的日期对象,因此不需要解析。他们刚刚添加到Apps脚本文档中。见here

+0

所以他们有!使用这些肯定会让事情变得更简单 - 感谢提示。 – Nick 2012-03-13 21:28:16

+0

但现在已弃用? – 2015-09-18 14:18:06