2016-12-24 3 views
0

Я пытаюсь сопоставить два разных ответа одного и того же поля даты в форме Google
Для этого для одной ячейки я получаю доступ к ее значению из электронной таблицы, сгенерированной путем заполнения его ответа, а для другого я получаю доступ к его значению из последнего ответа, сгенерированного путем заполнения второй формы
Вначале журналом наблюдения он сохранил значение в этом формате в электронной таблице
«Вторник 03 января 00:00:00 GMT + 05: 30 2017» (без кавычек)
и другие сохраненные значение в этом формате «2017-01-03»
И я хочу сравнить эти два значения, я знаю, могу ли я получить доступ к электронной таблице второй формы, это будет легко сравнить, но я могу сравнить ее в этом формате, t нужно получить доступ к таблице других форм?
Edit: я попытался сравнить клетки обеих таблиц, но оба они также имели различные форматы
Во втором формате таблицы было как
«Чт 16 марта 2017 00:00:00 GMT + 0530 (IST)»Google Spreadsheet datetime conversion

ответ

1

Значение «2017-01-03» - это строка . Он не несет никакой информации о часовом поясе с ним, поэтому вам нужно знать (из контекста, в котором вы собрали форму). Возможно, это Азия/Калькутта, индийское время? Если это так, я бы отформатировал первую дату как строку, используя тот же часовой пояс, и сравнил два.

var str = "2017-01-03";  // date as string 
var val = range.getValue(); // date as Date object, from spreadsheet 
var val2str = Utilities.formatDate(val, 'Asia/Kolkata', 'yyyy-MM-dd'); // now also a string 
Logger.log(str == val2str); // test equality 

(Можно также проверить неравенства на строки, отформатированные таким образом, str < val2str).

Другим подходом будет анализ второй строки в объекте даты, но это несколько сложнее, так как синтаксический анализатор даты в Google Apps является исчерпывающим.

+0

Я разделил обе строки по пространству и сделал две новые строки формы «Tue Mar 16 2017» и приравнен, но над куском кода просто красиво! – AAMBol

+0

И когда мой скрипт запускает код, для которого я установил триггер в форме submit, я не мог сразу увидеть результат (который является новой новой электронной таблицей, в которой я храню результаты запросов), но мне пришлось вручную запустить скрипт снова , Можете ли вы мне помочь? – AAMBol

+0

Это означает, что данные еще не находятся в электронной таблице при срабатывании функции. Вы можете попробовать добавить 'SpreadsheetApp.flush();' перед тем, как выбрать дату из электронной таблицы; это должно применяться все ожидающие изменения. Но более надежно и удобнее получать представленные значения непосредственно из [объекта события] (https://developers.google.com/apps-script/guides/triggers/events#form-submit). – FTP