Значение ячейки даты возвращает скрипт Google Apps времени ntp

У меня есть таблица с датой.

Когда я использую этот код для получения значения:

function run() {
var ss = SpreadsheetApp.getActive().getSheetByName("Planning Template");
var values = ss.getRange("G3:ADS3").getValues();
var value = ss.getRange("A1").getValue();
var date = new Date (value);

  for(var column in values[0]){
  var test = values[0][column];
  if( test ==  value){
   var i = column; 
  }
}}

Это результат getValues ​​():

[[42370, "", 42371, "", 42372, "", 42373, "", 42740, "", 42741, "", 42742, "", 42743, "", 42378, "", 42379, "", 42380, "", 42381, "", 42382, "", 42383, "", 42384, "", 42385, "", 42386, "", 42387...

И это результат getValue (): Sun 01 января 2017 00:00:00 GMT + 0100 (CET)

Я не понимаю, почему Spreadsheet возвращает время ntp.

Изменить: это значение, обычно я ожидаю, что когда я вызываю getValue, я получаю это значение, но я получаю это 42373. Он отформатирован, но значение все еще является датой, почему я получаю отформатированный номер? введите здесь описание изображения Это отображаемое значение, поскольку я exoect, я получаю 3, когда я вызываю getDisplayValue. введите здесь описание изображения


person Taaut    schedule 21.12.2016    source источник
comment
Вы пробовали отформатировать столбцы даты в электронной таблице, чтобы они соответствовали формату даты? Вы также можете использовать formatDate, найденный здесь: разработчики .google.com / apps-script / reference / utilities / для единообразия.   -  person utphx    schedule 21.12.2016
comment
Я пробовал, но когда я использую formatDate, он говорит, что дата недействительна. Я думаю, причина в том, что ntp начинается с 1900, а unix - с 1970. Formatdate использует новую дату в качестве входных данных, но новая дата не может создать дату со значением 4370.   -  person Taaut    schedule 22.12.2016
comment
вы можете поделиться копией таблицы?   -  person utphx    schedule 22.12.2016


Ответы (1)


Методы getValue и getValue могут возвращать "Number, Boolean, Date или String в зависимости от значения ячейки ". В частности, вы получаете

  • число, если ваша ячейка отформатирована как число.
  • объект даты JavaScript, если ваша ячейка отформатирована как дата, дата-время, время или продолжительность (например, значение времени 3:00 pm станет датой-временем JS, а часть даты - 30 декабря 1899 г.)
  • строка, если содержимое представляет собой обычный текст (пустая строка, если ячейка пуста)
  • Логическое значение, если содержимое ИСТИНА или ЛОЖЬ

В вашем случае вы должны убедиться, что сравниваемые столбцы имеют одинаковое форматирование, возможно, форматирование даты - это то, что вы хотите.

person Community    schedule 21.12.2016
comment
Я знаю это, но я подумал, что могу отформатировать значение из ячейки с помощью скрипта приложений Google, чтобы оба имели одинаковый формат. - person Taaut; 22.12.2016
comment
Вы можете отформатировать сами ячейки, используя метод setFormat. Не рекомендуется пытаться вручную преобразовать время из формата электронной таблицы в дату JavaScript. В таблицах используется местное время с переходом на летнее время, где это возможно; пересчет не доставит удовольствия. - person ; 22.12.2016