2 回答
TA贡献1876条经验 获得超6个赞
解释:
主要问题是numArr
是 形式的二维数组[[],[],[]]
。
要实现目标,您需要执行两个步骤:
var numArr = shrinkLog.getRange(row+3,4,5).flat()
过滤掉空值(空白单元格)以获得正确的总和:
var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="")
解决方案:
替换为:
var numArr = shrinkLog.getRange(row+3,4,5).getValues();
和
var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="");
for (var i=0; i < arrTarget.length; i++){
//find Row
var row = arrSource.indexOf(arrTarget[i]);
var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="");
//add units in an array
var sum = numArr.reduce(function(a,b){return a+b;},0);
//execute
var testsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test Sheet");
testsheet.getRange(i+1,1,1,1).setValue(sum);
}
TA贡献1834条经验 获得超8个赞
您可以之前在阵列上运行 .map 并将任何null
值替换为0
.
var sum = numArr .map(e => e === null ? 0 : e) .reduce(function(a,b){return a+b;},0);
添加回答
举报