Я пытаюсь пройтись по рабочему листу и рассчитать основную стоимость позиции «Первый пришел, первый вышел».Мой рабочий лист сейчас всего в ~ 120 строках, но он, несомненно, будет расти со временем.Функция уже выполняется довольно медленно, поэтому я ищу решения о том, как ее ускорить.Я также программист noob, и я впервые использую javascript, поэтому любые другие советы приветствуются!
Спасибо!
function FifoCostBasis(symbol, quantity) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Transactions Import");
var lastRow = 150;
var lastCol = 12;
var costBasisSold = Number(0);
var quantitySold = Number(0);
for (var row = lastRow; row >= 2; row--){
var action = sheet.getRange(row,2).getValue();
var sym = sheet.getRange(row,3).getValue();
var qSold = Number(sheet.getRange(row,5).getValue());
var cbSold = Number(sheet.getRange(row,10).getValue());
var price = Number(sheet.getRange(row, 6).getValue());
if(["Buy", "Reinvest Shares", "Short Term Cap Gain Reinvest",
"Qual Div Reinvest", "Long Term Cap Gain
Reinvest"].indexOf(action)>=0
&& sym == symbol){
quantitySold += qSold;
costBasisSold += cbSold;
if(quantitySold > quantity){
var difference = quantitySold - quantity;
var cbSoldAdj = difference*price;
quantitySold = quantitySold - difference;
costBasisSold = costBasisSold - cbSoldAdj;
};
};
};
return costBasisSold;
};