Нет конкретного метода для достижения того, что вы хотите, но вы можете использовать функцию displayValues [1], чтобы получить значение в виде строки и манипулировать им для достижения вашей амбициозной цели.
Вот пример реализации, которую я сделал и успешно протестировал, вам нужно только изменить эти две части кода:
1) Чтобы получить массив массивов, каждый массив со строкой требуется в качестве единственного значения или пуст, если ячейка пуста:
var hoursclaimed = sheet.getRange ("F4: F35"). getDisplayValues ();
2) Для этого случая, когда ячейка пуста, она возвращает неопределенный объект, поэтому, чтобы избежать пустых ячеек, я использовал функцию isArray (). Затем вы получаете строку и управляете ею с помощью функции подстроки, чтобы получить минуты и часы, преобразовать их в числа и работать с ними.
for (var r=0;r<=hoursclaimed.length;r++){
var valueArray = hoursclaimed[r];
if (Array.isArray(valueArray)){
var str = valueArray[0];
var minutes = Number(str.substring(str.length - 2, str.length));
var hours = Number(str.substring(0, str.length - 3));
totalhours+=(minutes/60) + hours;
}
}
Другое решение:
Вы можете также использовать функцию getValues (), как она есть сейчас (которая получит массив дат), а затем использовать функции JavaScript «getHours» и «getMinutes» вместо манипулирования строками:
var minutes = date.getMinutes();
var hours = date.getHours();
[1] https://developers.google.com/apps-script/reference/spreadsheet/range#getDisplayValues()