Script not Working

35 views
Skip to first unread message

Quali Auto

unread,
Sep 2, 2022, 12:55:36 PM9/2/22
to Google Apps Script Community
Hello everyone, i'm new here and don't know I'm doing this correct. 

Can you all help me? 

let app=SpreadsheetApp;
let spreadsheet=app.getActiveSpreadsheet();
let sheet=spreadsheet.getSheetByName("BDCLIENTES");
let db=spreadsheet.getSheetByName("listcod");
let ui=app.getUi();

function onEdit(e)
{
  if(e.range.getColumn() == 27 && e.source.getSheetByName() == 'BDCLIENTES'){
    if(e.value != undefined){
      setValidation(e)
    }else{
      clearValidation(e);
    }
  }
}

function setValidation(e)
{
  let cell = sheet.getRange('AB$[e.range.getRow()]');
  let options=db.getRange('A1:F1').getValues();
  let colData;
  
  for(let row=0; row < options.lenght; row++) {
    for(let col=0; col < options[row].lenght; col++){
      if(e.value == options[row][col]){
         colData = col + 1;
         }
    }
  }
    
  let range = db.getRange(2, colData, 50, 1);
  let rule = app.newDataValidation().requireValueInRange(range).build();
  cell.setDataValidation(rule);
}

function clearValidation(e)
{
  let cell = sheet.getRange('AB$[e.range.getRow()}');
  cell.setDataValidation(null);
  cell.clear();
}


I want to imput one information on AA column and get a list of options on AB column. 

Thank you! 

Ben Ronkin

unread,
Sep 4, 2022, 10:44:35 AM9/4/22
to Google Apps Script Community
I made a few changes -- give this a try:

let app=SpreadsheetApp;
let spreadsheet=app.getActiveSpreadsheet();
let sheet=spreadsheet.getSheetByName("BDCLIENTES");
let db=spreadsheet.getSheetByName("listcod");
let ui=app.getUi();

function onEdit(e)
{
  if(e.range.getColumn() == 27 && e.source.getActiveSheet().getName() == 'BDCLIENTES'){

    if(e.value != undefined){
      setValidation(e)
    }else{
      clearValidation(e);
    }
  }
}

function setValidation(e)
{
  let cell = sheet.getRange(`AB${e.range.getRow()}`);
  const range=db.getRange('A1:F1');
  const rule = app.newDataValidation().requireValueInRange(range).build();
  cell.setDataValidation(rule);
  SpreadsheetApp.flush();

}

function clearValidation(e)
{
  let cell = sheet.getRange(`AB${e.range.getRow()}`);
  cell.setDataValidation(null);
  cell.clear();
  SpreadsheetApp.flush();
}

Reply all
Reply to author
Forward
0 new messages