Cómo eliminar palabras específicas en hojas de cálculo utilizando una macro de ONLYOFFICE

8 mayo 2024By Sergey

Cuando trabajamos con hojas de cálculo, es habitual encontrarnos con situaciones que requieren la búsqueda de una palabra concreta en las celdas de una hoja, junto con posibles modificaciones o eliminaciones de dichas palabras. En esta entrada del blog, vamos a desarrollar una macro diseñada para buscar y eliminar una palabra específica dentro de una hoja de cálculo.

Cómo eliminar palabras específicas en hojas de cálculo utilizando una macro de ONLYOFFICE

Creación de la macro

const oWorksheet = Api.GetActiveSheet();
const oRange = oWorksheet.GetSelection();
const wordToCheck = "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 toda la hoja de cálculo.

let index = 0;
  oRange.ForEach(function (range) {
    index++;
    const cellValue = oWorksheet.GetRange(range).GetValue();
    const contains = containsWord(cellValue, wordToCheck);

A continuación, iteramos a través del rango usando un bucle foreach, obtenemos el valor en cada celda de la selección, y lo pasamos al método containsWord(). El método containsWord() recibe dos parámetros: el valor de la celda y la palabra que queremos buscar.

    if (contains === 1) {
      //Uncomment the console.log() to view deleted cells in the browser's console.
      // console.log(`The sentence ${cellValue} contained the word you wanted to delete, and was deleted.`);
      oWorksheet.GetRange(range).Clear();
    } else if (contains === true) {
      oWorksheet
        .GetRange(range)
        .SetFillColor(Api.CreateColorFromRGB(204, 0, 0));
    }

Una vez finalizado el método containsWord(), la acción posterior viene determinada por el valor devuelto. Si el valor es 1, lo que indica una coincidencia exacta, la celda se borra. Por otra parte, si el método devuelve true, lo que significa la presencia de la palabra objetivo dentro de caracteres adicionales, la celda se resalta.

function containsWord(sentence, word) {
    const trimmedSentence = sentence.trim();
    const trimmedWord = word.trim();
    if (trimmedSentence === trimmedWord) {
      return 1;
    } else {
      const regex = new RegExp("\\b" + trimmedWord + "\\b", "i");
      return regex.test(trimmedSentence);
    }
  }

El método containsWord() es la función de cálculo principal de esta macro. Acepta el valor de la celda y la palabra a buscar, recortándola para eliminar cualquier espacio adicional. Si el valor de la celda coincide exactamente con la palabra objetivo sin contenido adicional, devuelve 1. Sin embargo, si el valor de la celda contiene la palabra buscada junto con otros caracteres, como dentro de una frase, devuelve true.

El código completo de la macro

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const oRange = oWorksheet.GetSelection();
  const wordToCheck = "apple";
  let index = 0;
  oRange.ForEach(function (range) {
    index++;
    const cellValue = oWorksheet.GetRange(range).GetValue();
    const contains = containsWord(cellValue, wordToCheck);

    if (contains === 1) {
      //Uncomment the console.log() to view deleted cells in the browser's console.
      // console.log(`The sentence ${cellValue} contained the word you wanted to delete, and was deleted. `);
      oWorksheet.GetRange(range).Clear();
    } else if (contains === true) {
      oWorksheet
        .GetRange(range)
        .SetFillColor(Api.CreateColorFromRGB(204, 0, 0));
    }
  });

  function containsWord(sentence, word) {
    const trimmedSentence = sentence.trim();
    const trimmedWord = word.trim();
    if (trimmedSentence === trimmedWord) {
      return 1;
    } else {
      const regex = new RegExp("\\b" + trimmedWord + "\\b", "i");
      return regex.test(trimmedSentence);
    }
  }
})();

Vamos a ver cómo funciona nuestra macro.

Y ya está, ¡la macro para eliminar palabras de una hoja de cálculo en acción! Esta ingeniosa herramienta está diseñada para eliminar sin esfuerzo palabras específicas, haciendo que la edición de tu hoja de cálculo sea pan comido, ahorrando tiempo y mejorando el flujo de trabajo. ¡Feliz edición!

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!