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);
添加回答
舉報