我的工作表中有一些格式为Duration的数字字段(这会导致它们被视为一天的分数)。如果我在公式中使用它们,它们将被正确地视为数字。
我还需要在计算其总和的脚本中使用它们。但是在脚本中,它们作为Date对象出现。有没有办法迫使他们作为数字出现?如果没有,我如何正确地将日期转换为数字?使用getUTCHours
/ getUTCMinutes
/ getUTCSeconds
几乎可以正常工作,但它会将小时数截断为24,并且会失去精度(即使我使用毫秒,但损失较小)。 Date对象似乎有年份= 1899,这特别奇怪。
目前我确定了这一点,但我不确定它是否足够可靠(长数为getTime
为零):
if (val instanceof Date) {
return (val.getTime() + 2209161600000) / 24 / 3600 / 1000;
}
答案 0 :(得分:1)
尝试使用函数cell.getDisplayValue()
。它会将时间格式化的单元格转换为文本,如'13:00',然后您可以使用
和加号将其转换为适当的数字:
var cell = sheet.getRange(myRange);
var strDisplay = cell.getDisplayValue();
var numVal = + strDisplay.substring(0, 2);