使用谷歌应用程序脚本解析日期字符串

Nic*_*ick 1 timestamp google-apps-script

我是谷歌应用程序脚本的新手,我在从UiApp表单解析日期字符串时遇到问题.在这个例子中,我正在编写一个脚本,允许用户在指定的日期范围内过滤带时间戳的电子表格.

我的问题是,当以dateFromField传统的javascript格式YYYY,M,D(即2012,1,22012年2月2日)传递日期字符串(来自名为的文本框)时,下面的代码返回无效的日期对象:

function dateFilter(e) {
  var fromDate = new Date(e.parameter.dateFromField);
} 
Run Code Online (Sandbox Code Playgroud)

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

但是,如果我直接在函数中键入日期字符串,即:

function dateFilter(e) {
  var fromDate = new Date(2012,1,2);
} 
Run Code Online (Sandbox Code Playgroud)

我得到一个有效的日期对象.我不明白这两个例子之间的区别 - 据我所知,它们是等价的; 在两个实例中,字符串2012,1,2都被传递给new Date函数.我显然错过了一些简单的事情 - 谁能告诉我什么?

Hen*_*reu 5

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

我想你可以在传递之前拆分参数,例如

var dateParts = e.parameter.dataFromField.split(',');
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]);
Run Code Online (Sandbox Code Playgroud)