He leído muchas publicaciones sobre esto en SO. Tengo problemas para usar Regex en los scripts de Google para hojas.
Tengo una lista de dominios.
Objetivo: quiero eliminar toda la información de ruta de todos los dominios de la lista (todo después de .*/ )
Por ejemplo, quiero convertir esto:
example.com/path-after-domain
example2.com/another-path-afterDomain
dentro de esto:
example1.com
example2.com
Esto es lo que estoy tratando de hacer.
function replaceInSheet(values, to_replace, replace_with) { for(var row in values){ var replaced_values = values[row].map(function(original_value) { return original_value.toString().replace(to_replace,replace_with) }) } } replaceInSheet(values, '((\/\w+)*\/)(.*)', "") También probé usando createtextfinder . Pero recibo un error al intentar usar expresiones regulares
const check = range.createTextFinder("((\/\w+)*\/)(.*)").useRegularExpression(true) check.replaceWith("")Nota: probé la expresión regular con https://regex101.com/ y obtiene con éxito toda la información de la ruta
Creo que su objetivo es el siguiente.
Desea lograr la siguiente conversión con Google Apps Script.
De
example.com/path-after-domain, example2.com/another-path-afterDomainA
example1.com, example2.com En este caso, ¿qué tal usar split de la siguiente manera?
const values = ["example.com/path-after-domain", "example2.com/another-path-afterDomain"]; const res = values.map(e => e.split("/")[0]); console.log(res) // [ 'example.com', 'example2.com' ] Si desea usar esto como una función personalizada, ¿qué le parece el siguiente script de muestra? En este caso, coloque una función personalizada como =SAMPLE(A1:A10) en una celda.
const SAMPLE = values => values.map(r => r.map(c => c.split("/")[0])); Si desea usar TextFinder usando su expresión regular de ((\/\w+)*\/)(.*) , ¿qué tal el siguiente script de muestra? En este caso, escape \ . Pensé que \\/.* también podría usarse.
const sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1:A" + sheet.getLastRow()).createTextFinder("((\\/\\w+)*\\/)(.*)").useRegularExpression(true).replaceAllWith("");Si se usa la función incorporada, ¿qué tal la siguiente fórmula de muestra?
=ARRAYFORMULA(IFERROR(INDEX(SPLIT(A1:A,"/"),, 1))) =ARRAYFORMULA(REGEXREPLACE(A1:A,"/.*",""))