我是谷歌应用程序脚本的新手,我在从UiApp表单解析日期字符串时遇到问题。在这个例子中,我正在编写一个脚本,允许用户在指定的日期范围内过滤带时间戳的电子表格。
我的问题是,当以传统的javascript格式dateFromField
传递日期字符串(来自名为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
函数。我显然错过了一些简单的事情 - 谁能告诉我什么?
答案 0 :(得分:5)
当您手动输入时,实际上传递了3个数字参数,而不是带有逗号分隔数字列表的字符串。
我猜你可以在传递之前拆分你的参数,例如
var dateParts = e.parameter.dataFromField.split(',');
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]);
答案 1 :(得分:2)
我建议在UiApp中使用DateBox和DatePicker类而不是文本框。它们返回一个实际的日期对象,因此根本不需要解析。它们刚刚添加到Apps脚本文档中。请参阅here。