[英]Google Apps Script concatenating numbers rather than adding
我在下面编写了代码,以获取一列数字的一部分并将其加起来。 但是,该函数是连接数字而不是相加。
我得到这个结果:
0AMOUNT120123126129132135138141144147
但是,如果我从12月开始运行,其总和应为:432
我在Google脚本中的代码:
//add sum and input it into the total column
function sum(startMonth, startColumn, lastRow){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
startColumn = startColumn +1;
var sum = 0;
var currAmount = 0;
var k = 0;
for(k = startMonth; k <= lastRow; k++){
currAmount = sheet.getRange(k, startColumn).getValue();
sum += currAmount; //currAmount + sum;
Logger.log(sum);
}
SpreadsheetApp.getActiveSheet().getRange(k, startColumn).setValue(sum);
SpreadsheetApp.getActiveSheet().getRange(k, startColumn).setBackground("Yellow");
return sum;
}
您的结果是提示:这不是要添加的数字。 这是串联的字符串。
currAmount = sheet.getRange(k, startColumn).getValue();
sum += currAmount; //currAmount + sum;
具体来说,这是主要问题。 无论getValue()
返回的数字是否为数字,都可以将其加到sum
。
有一些方法来解决这个问题将是调整的价值k
,检查typeof
值,或强迫值成数,这依赖于你想要做什么。 这本质上是一个JavaScript问题,在这里有规范的答案
另外,通常应该在可能的情况下进行批处理操作 ; 例如, getRange().getValue()
每次通过for循环运行getRange().getValue()
,不如使用它更好(例如,可能需要调整)
var amounts = sheet.getRange(startMonth, startColumn, (lastRow - startMonth), 1);
for(var k = startMonth; k <= lastRow; k++){
sum += amounts[k][0]
Logger.log(sum);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.