Quiero crear un botón para realizar una búsqueda + reemplazo para un conjunto específico de datos en mi hoja. ¡He echado un vistazo a otras preguntas, pero parece que no puedo hacer que funcione!
Esta es una réplica de mi hoja: https://docs.google.com/spreadsheets/d/1KX4xBzIPq468WN57HKRelkCwN4sr_9Nd3v36m4jj4jI/edit#gid=0
La totalidad de la columna B es el conjunto de datos en el que quiero realizar el F&R. Los valores que quiero usar:
Encontrar: " "
Reemplazar "%20"
Esencialmente, reemplazando los espacios entre palabras en la columna B con %20.
Esto, con un poco de concatenación, creará algunas URL para mí.
En su hoja de cálculo de muestra, parece que las celdas "A2, "B2" son los valores de https://www.harrods.com/en-gb/shopping/women-clothing/brands y 4 Moncler Simone Rocha , respectivamente. Y , en la columna de salida, la celda "C2" es la fórmula de =CONCATENATE($A$2,"#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E",B2) . En este caso, ¿qué tal modificar la fórmula como sigue?
=CONCATENATE($A$2,"#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E",B2) =CONCATENATE($A$2,"#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E",SUBSTITUTE(B2," ","%20"))https://www.harrods.com/en-gb/shopping/women-clothing/brands#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E4%20Moncler%20Simone%20Rocha en la celda "C2 ".Si desea lograr esto utilizando Google Apps Script, ¿qué le parece el siguiente script?
Copie y pegue el siguiente script en el editor de scripts de la hoja de cálculo y guárdelo. Y cuando desee ejecutar este script con un botón de imagen, coloque una imagen en la hoja de cálculo y asigne el nombre de función de myFunction al botón. Por esto, cuando hace clic en el botón, el script funciona. Y, cuando se ejecuta el script, un solo espacio de los valores de la columna "B" se sustituyen por %20 .
function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Filter URLs"); sheet.getRange("B2:B" + sheet.getLastRow()).createTextFinder(" ").replaceAllWith("%20"); }Como información adicional, cuando desee convertir su fórmula actual con Google Apps Script, también puede usar el siguiente script.
function myFunction2() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Filter URLs"); const url = sheet.getRange("A2").getValue(); const values = sheet.getRange("B2:B" + sheet.getLastRow()).getValues().map(([b]) => [url + "#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E" + b.replace(/ /g,"%20")]); sheet.getRange(2, 4, values.length, 1).setValues(values); }getRange(2, 4, values.length, 1) a getRange(2, 3, values.length, 1) .Agregué una nueva hoja ("Filtrar URL - Erik") a su hoja de cálculo de muestra. Allí, eliminé todo en la Columna C (incluido el encabezado) y coloqué la siguiente fórmula única en la celda C1:
=ArrayFormula({"Output";IF(B2:B="",,$A$2&"#dcp=1&dppp=100&OrderBy=rank&Filter=ABRA%5E"&SUBSTITUTE(TRIM(B2:B)," ","%"))})
Ampliando uno de los puntos de @Tanaike, esta fórmula creará el encabezado y todos los resultados para todas las filas sin necesidad de arrastrar la fórmula, usar scripts u otros métodos de Buscar/Reemplazar.
Si solo está buscando crear URL, use
=ENCODEURL(B2)en cambio. Esto convertirá automáticamente todos los caracteres que no sean URL a su codificación porcentual.