Это потому, что у вас должен быть тип данных для этой ячейки, установленный на «автоматический» или «длительность», и Google Sheets предположит, что «3:30:00» - это тип даты / времени для автоматического и для продолжительности он преобразует его в дату / время для передачи вашей функции. Он позволяет вам сохранить его в вашем формате (#: ##: ##), но когда вы передаете его в свою пользовательскую формулу, Sheets сначала преобразует его в объект Date Javascript, который затем возвращает ваша функция, и листы автоматически отображаются как обычная дата (12/30/1899
). См. Предупреждение Google о преобразованиях дат с пользовательскими функциями здесь .
Самое простое решение - просто явно установить формат ввода «обычный текст», используя раскрывающийся список выбора формата, а затем в коде пользовательской функции вы можете проанализировать его по своему усмотрению.
Например, я использовал этот StackOverflow ответ, чтобы написать свою пользовательскую функцию:
function DURATION_DECIMALS(input){
// https://stackoverflow.com/a/22820471/11447682
var arr = input.split(':');
var dec = parseInt((arr[1]/6)*10, 10);
return parseFloat(parseInt(arr[0], 10) + '.' + (dec<10?'0':'') + dec);
}
И здесь он работает с форматом, установленным в обычный текст: