I'm new to google apps script, and I'm having trouble parsing date strings from a UiApp form. In this instance, I'm writing a script to allow the user to filter a timestamped spreadsheet within a specified date range.
My problem is that the code below returns an invalid date object when passed a date string (from a text box named dateFromField
) in the conventional javascript format YYYY,M,D
(i.e. 2012,1,2
for Feb 2, 2012):
function dateFilter(e) {
var fromDate = new Date(e.parameter.dateFromField);
}
I've checked that the e.parameter.dateFromField
correctly returns the given string (Logger.log(e.parameter.dateFromField);
returns 2012,1,2
), and that its type is string (rather than object).
However, if I type the date string into the function directly, i.e.:
function dateFilter(e) {
var fromDate = new Date(2012,1,2);
}
I get valid a date object. I don't understand the difference between these two examples - as far as I can tell they are equivalent; in both instances the string 2012,1,2
is being passed to the new Date
function. I'm obviously missing something simple - can anyone tell me what?
I would recommend using either the DateBox and DatePicker classes in UiApp instead of a text box. They return an actual date object therefore eliminating the need to parse at all. They were just added to the Apps Script documentation. See here.
When you typed it manually, you actually passed 3 number parameters, not a string with a list of comma separated numbers.
I guess you could just split your parameter before passing, e.g.