Cómo eliminar los datos de una hoja de cálculo después de una palabra clave específica utilizando la macro de ONLYOFFICE
El mes pasado desarrollamos una macro para borrar el contenido de las celdas de una hoja de cálculo cuando se detectaba una palabra coincidente. En esta entrada de blog, utilizaremos una lógica similar para crear una macro que elimine todo el contenido de una celda después de una palabra específica.
Creación de la macro
const oWorksheet = Api.GetActiveSheet();
const oRange = oWorksheet.GetSelection();
const wordReference = "apple";
Para empezar, obtenemos la hoja de cálculo activa y la selección en las variables oWorksheet y oRange, y establecemos la palabra que queremos buscar en la variable wordReference.
oRange.ForEach(function (range) {
const cellValue = oWorksheet.GetRange(range).GetValue().trim();
const containsIndex = containsWord(cellValue, wordReference);
A continuación, utilizando un bucle forEach, iteramos a través de las celdas del rango seleccionado, almacenamos el valor de la celda en la variable cellValue y pasamos el cellValue y la palabra al método containsWord.
if (containsIndex !== -1) {
const newValue = cellValue.substring(
0,
containsIndex + wordReference.length
);
oWorksheet.GetRange(range).SetValue(newValue);
} else {
console.log(
"No instance found in the selection where deletion is applicable."
);
}
La condición ‘(containsIndex !== -1)’ busca la palabra especificada en el valor de la celda. Si se encuentra la palabra, el valor de la celda se actualiza a una subcadena del valor original, borrando esencialmente todo lo que hay después de la palabra especificada.
function containsWord(sentence, word) {
const trimmedSentence = sentence.trim();
const trimmedWord = word.trim();
const index = trimmedSentence
.toLowerCase()
.indexOf(trimmedWord.toLowerCase());
return index;
}
El método containsWord es la función principal de esta macro. Toma como parámetros el valor de la celda y la palabra a buscar. Comprueba si la palabra está presente en la celda encontrando el índice de la palabra dentro del contenido de la celda. La función devuelve el índice donde empieza la palabra, o ‘-1‘ si la palabra no se encuentra.
El código completo de la macro
Este es el código completo de la macro:
(function () {
const oWorksheet = Api.GetActiveSheet();
const oRange = oWorksheet.GetSelection();
const wordReference = "apple";
oRange.ForEach(function (range) {
const cellValue = oWorksheet.GetRange(range).GetValue().trim();
const containsIndex = containsWord(cellValue, wordReference);
if (containsIndex !== -1) {
const newValue = cellValue.substring(
0,
containsIndex + wordReference.length
);
oWorksheet.GetRange(range).SetValue(newValue);
} else {
console.log(
"No instance found in the selection where deletion is applicable."
);
}
});
function containsWord(sentence, word) {
const trimmedSentence = sentence.trim();
const trimmedWord = word.trim();
const index = trimmedSentence
.toLowerCase()
.indexOf(trimmedWord.toLowerCase());
return index;
}
})();
Ahora vamos a ver nuestra macro en acción.
Ya está. Esta práctica macro está diseñada para recortar los valores de las celdas sin mucho esfuerzo, mejorando tu experiencia en lo que se refiere a hojas de cálculo. Al ser compatible tanto con editores web como de escritorio, esta macro se convierte en una opción obvia en tu kit de herramientas de hojas de cálculo.
No te pierdas la oportunidad de aprovechar el poder de la API de ONLYOFFICE. Nuestra amplia biblioteca de métodos API es tu llave para transformar tus ideas en realidad. Si tienes alguna pregunta o concepto innovador, te animamos a que lo compartas con nosotros. Tu aportación es muy valorada, y nos entusiasma la posibilidad de colaborar contigo. ¡Te deseamos mucha suerte en tus esfuerzos exploratorios!