В моей электронной таблице есть несколько кнопок, которые подключены к скрипту отслеживания времени, который выводит текущее время в соответствующий столбец:
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
function start() {
ss.getRange(ss.getActiveRange().getRowIndex(), 5).setValue(new Date().toLocaleTimeString());
ss.getRange(ss.getActiveRange().getRowIndex(), 5).setNumberFormat('HH:mm');
}
function stop() {
ss.getRange(ss.getActiveRange().getRowIndex(), 6).setValue(new Date().toLocaleTimeString());
ss.getRange(ss.getActiveRange().getRowIndex(), 6).setNumberFormat('HH:mm');
var newcell = ss.getRange(ss.getActiveRange().getRowIndex()+1, 5);
if (newcell.isBlank()){
ss.setCurrentCell(newcell).activate();
}
else{
ss.insertRowAfter(ss.getActiveRange().getRowIndex());
ss.setCurrentCell(newcell).activate();
};
}
Раньше это работало отлично и выводило время в виде числа, которое я мог затем отформатировать так, как мне было нужно. У меня написано выводить нужный формат с помощью setNumberFormat('HH:mm'). Но только в этом году, после того как я вернулся к нему через пару месяцев, теперь он выводится только в виде текста. Например, вместо вывода 16:00 он выводит 16:00:00 в виде текста, с которым я не могу работать или использовать в качестве ссылки в формуле. Все мои формулы, вычисляющие общее время, теперь дают #ЗНАЧ!. Я вообще не редактировал сценарий.
Кто-нибудь знает, почему это происходит внезапно и как я могу это исправить? Заранее спасибо.





Вы можете попробовать использовать аргумент options из toLocaleTimeString()
Попробуйте заменить:
toLocaleTimeString()
С:
toLocaleTimeString("en-US", { hour12: false })
Выход: