Así que estoy construyendo una base de datos increíblemente simple (realmente solo un MVC menor en la hoja) para estandarizar las prácticas de almacenamiento de datos para automatizar algunas cosas. Estoy tratando de crear una función de búsqueda para que las entradas de datos se puedan editar, pero tengo problemas para comparar mis parámetros de búsqueda, ya que vienen en un formato "ABC 1234". Tengo la sensación de que todavía no conozco el idioma lo suficientemente bien, pero aquí está mi función de búsqueda;
function search() { const searchValue = searchCell.getValue() const data = dataWS.getRange("A2:I").getValues() data.filter(r => r[8] == searchValue) const recordsFound = data.filter(r => r[8] == searchValue) if(recordsFound.length == 0) return fieldRange.forEach((f,i) => formWS.getRange(f).setValue(recordsFound[0][i+1])) }Las ubicaciones de las celdas y las ubicaciones de las hojas y todo se establece globalmente, así que si falta algo aquí que necesite, con gusto se lo proporcionaré.
Tanto == como === no funcionaron y me imagino que simplemente me falta algo de conocimiento o experiencia aquí, pero también tengo problemas para encontrar lo que me falta. Duro cuando no sabes lo que no sabes. Recibo el error "Error de tipo: no se puede leer la propiedad '1' de undefined" y apunta a la línea de comparación if.
function search() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("SheetName"); const searchValue = sh.getRange("?").getValue(); const dataWS= ss.getSheetByName("?") const data = dataWS.getRange("A2:I" + dataWS.getLastRow()).getValues().filter(r => r[8] == searchValue);//r[8] is column 9 //I don't know where you're going from here so I'll just logger.log the data Logger.log(JSON.stringify(data)); }Usar textfinder también es bastante fácil
function search() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("SheetName"); const searchValue = sh.getRange("?").getValue(); const dataWS= ss.getSheetByName("?") const data = dataWS.getRange("A2:I" + dataWS.getLastRow()).createTextFinder(searchValue).findAll().map(r => dataWS.getRange(r.getRow(),1,1,dataWS.getLastColumn()).getValues()[0]); Logger.log(JSON.stringify(data)); }