繁体   English   中英

Google Apps脚本连接数字而不是添加数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM