2 回答

TA貢獻1794條經驗 獲得超7個贊
解釋:
您的目標是迭代從第 6 個工作表(索引 5)到第 15 個工作表(索引 14)的工作表。記住
getSheets()[0]
是第一張。對于每張工作表,您想要獲取 range 中值的總和
AF3:AF
。為了獲得總和,我將2D 數組展平為 1D,過濾掉空單元格,然后使用reduce求總和。最后我們將數據粘貼回工作表
Master Sales
。
解決方案:
function myFunction() {
? const ss = SpreadsheetApp.getActive();
? const sheet1 = ss.getSheetByName('Master Sales');
? const sheets = ss.getSheets().slice(5,15);
? const data = [];
? sheets.forEach( sh =>?
? data.push([sh.getRange('AF3:AF').getValues().flat().filter(r=>r!='').reduce((a,b)=>a+b)])
?);?
? sheet1.getRange(2,39,data.length,1).setValues(data); //AM
}
邊注:
在 javascript 中對數組進行切片的正確方法是使用slice:
const sheets = ss.getSheets().slice(5,15);

TA貢獻2011條經驗 獲得超2個贊
不完全是一個答案。只是這一行看起來不太好:
var value = sheet.getRange('AF3:AF').getValue(); sheet1.getRange('AM2:AM').setValue(value);
不應該在那里getValues()
而setValues()
不是getValue()
setValue()
?由于范圍包括許多單元格。
getValue()
并setValue()
僅處理范圍的一個(第一個)單元格。
添加回答
舉報