MainFunc() 函数对 SecondsToHours() 函数返回的单元格值进行加减运算。在“Main”表的单元格 (4,5) 中,taskTotalTime 的分配(理论上)应该由 minesTime 的值相加。问题是该值不是作为数字总结的,而是作为字符串总结的。也就是说,0.19 + 0.19 = 0.190.19 工作表上的单元格被格式化为数字 (#0,000.00)。有趣的是,在下一个单元格 (4,6) 中,从数字中减去相同的 minesTime 变量,一切正常 - 数字每次减少 0.19。
这里有什么问题?
function MainFunc() {
var ssMain = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main")
var minesTime = SecondsToHours(684)
// здесь всё нормально: вычитает как число
var taskTimeRamaining = ssMain.getRange(i, 6).getValue();
taskTimeRamaining -= minesTime;
ssMain.getRange(4, 6).setValue(taskTimeRamaining);
// а здесь почему-то суммирует как строку
var taskTotalTime = ssMain.getRange(i, 5).getValue();
taskTotalTime += minesTime;
ssMain.getRange(4, 5).setValue(taskTotalTime);
}
function SecondsToHours(s) {
var h = s/3600;
h = h.toFixed(2);
return h;
}
因为定义了字符串加法运算,但没有定义减法运算。