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