'Find a range of an object in google apps script

I am a newbie with coding and am trying to get the minimum value of a column (of a temporary sheet) and then copy that value and some data from the corresponding row to another sheet. For some reason it seems to work only once during the loop, is it because I'm trying to define a range based on an object?

    function create_filter(){
    const  ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet1 = ss.getSheetByName("APperCountry");
    const sheet2 =ss.getSheetByName("Tender");
    
    var lanelist = sheet2.getRange(2, 1, sheet2.getLastRow(), 8).getValues();
    var country = ('B:B');
    var origin = ('E:E');
  
    

for(var i=2; i<=lanelist.length;i++){
  
  Logger.log("Filter has been added.");
  country = ('B'+i);
  Logger.log(country);
  var origin = ('E'+i)
  var calc = ('M'+i);
  var apname = ('N'+i);
  const ori = sheet2.getRange(origin);

  if(ori.isBlank()){
  continue;
  }  

  const  range = sheet1.getRange("A:D");
  const  filter = range.createFilter();
  var Ctry = sheet2.getRange(country).getValue();
  const  Filter_Criteria1 = SpreadsheetApp.newFilterCriteria().whenTextContains(Ctry);
  const coll1 = 1;
  const  add_filter1 =  filter.setColumnFilterCriteria(coll1,Filter_Criteria1);
  const  new_sheet = ss.insertSheet();
  new_sheet.setName("AirportDistanceCalc");
  var tempsheet = ss.getSheetByName('AirportDistanceCalc');

  range.copyTo(new_sheet.getRange(1,1));

var aplist = new_sheet.getRange(2, 1, new_sheet.getLastRow()-1, 8).getValues();

new_sheet.getRange(1,5,1,1).setValue("Origin")
new_sheet.getRange(1,6,1,1).setValue("DistanceKM")

for(var j=0; j<aplist.length;j++){
  
  Logger.log(origin);

  ori.copyTo(new_sheet.getRange(j+2,5));

  mainFun()
  }
  let comparisonRange = tempsheet.getRange("F2:F");
  let comparisonRangeValues = comparisonRange.getValues().filter(String);
  let minimum = comparisonRangeValues[0][0];

  comparisonRangeValues.forEach((rowItem, rowIndex) => {
    comparisonRangeValues[rowIndex].forEach((columnItem) => {
      minimum = Math.min(minimum, columnItem);

    });
  });

  console.log(minimum);
  sheet2.getRange(calc).setValue(minimum);
  tempsheet.getRange(minimum, 2).copyTo(sheet2.getRange(apname));

  if (tempsheet) {
    ss.deleteSheet(tempsheet);
  }
  filter.remove();
}  
}


Solution 1:[1]

The minimum of a column

function mincolumn(col=1) {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet1");
  const min = sh.getRange(1,col,sh.getLastRow()).getValues().flat().filter(e => !isNaN(e)).sort((a,b) => a - b)[0];
  Logger.log(min);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Cooper