Разбор строк даты с помощью скрипта Google Apps - PullRequest
1 голос
/ 12 марта 2012

Я новичок в скрипте приложений Google, и у меня возникают проблемы при разборе строк дат из формы UiApp. В этом случае я пишу сценарий, позволяющий пользователю фильтровать электронную таблицу с отметкой времени в указанном диапазоне дат.

Моя проблема в том, что приведенный ниже код возвращает недопустимый объект даты при передаче строки даты (из текстового поля с именем dateFromField) в обычном формате javascript YYYY,M,D (то есть 2012,1,2 для 2 февраля 2012 г.):

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

Я проверил, что e.parameter.dateFromField правильно возвращает заданную строку (Logger.log(e.parameter.dateFromField); возвращает 2012,1,2) и что ее тип - строка (а не объект).

Однако, если я введу строку даты непосредственно в функцию, то есть ::1014*

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

Я получаю действительный объект даты. Я не понимаю разницу между этими двумя примерами - насколько я могу судить, они эквивалентны; в обоих случаях строка 2012,1,2 передается в функцию new Date. Я, очевидно, упускаю что-то простое - кто-нибудь может мне сказать, что?

Ответы [ 2 ]

5 голосов
/ 12 марта 2012

Когда вы набрали его вручную, вы фактически передали 3 числовых параметра, а не строку со списком чисел, разделенных запятыми.

Я думаю, вы могли бы просто разделить свой параметр перед передачей, например,

var dateParts = e.parameter.dataFromField.split(',');
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]);
2 голосов
/ 12 марта 2012

Я бы порекомендовал использовать классы DateBox и DatePicker в UiApp вместо текстового поля. Они возвращают фактический объект даты, поэтому устраняют необходимость разбора вообще. Они были просто добавлены в документацию Apps Script. Смотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...