如何使用 ONLYOFFICE 宏在电子表格中删除特定单词

2024年05月13日作者: Alina

在处理电子表格时,经常会遇到需要在工作表的单元格中搜索特定单词并可能修改或删除实例的情况。在这篇博客文章中,我们将开发一个宏,旨在搜索并删除电子表格中特定单词的出现。

How to delete specific words in spreadsheets using an ONLYOFFICE macro

构建宏

const oWorksheet = Api.GetActiveSheet();
const oRange = oWorksheet.GetSelection();
const wordToCheck = "apple";

首先,我们获取活动工作表及其选区,分别将它们存储在 oWorksheet 和 oRange 变量中,并设置我们希望在整个电子表格中搜索的单词。

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

接下来,我们使用 foreach 循环遍历选区,获取每个单元格的值,并将其传递给 containsWord 方法。containsWord() 方法接受两个参数:单元格的值和我们想要搜索的单词。

    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));
    }

在 containsWord() 方法完成后,后续操作将由返回值决定。如果返回值为1,表示完全匹配,该单元格将被清空。另一方面,如果方法返回 true,则表示目标单词存在于更多字符中,那么该单元格将被高亮显示。

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);
    }
  }

containsWord() 方法作为这个宏的主要计算功能。它接受单元格的值和要搜索的单词,并进行修剪以消除任何额外的空间。如果单元格的值与目标单词完全匹配且没有其他内容,它返回1。然而,如果单元格的值包含目标单词以及其他字符,例如在一个句子中,它返回 true。

完整宏代码

(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);
    }
  }
})();

让我们看看我们的宏的表现如何。

就这样,电子表格删除单词宏已经投入使用!这个巧妙的工具旨在轻松移除特定单词,使您的电子表格编辑变得轻松,节省时间,并提升您的电子表格工作流程。祝您编辑愉快!

不要错过利用 ONLYOFFICE API 的机会。我们丰富的API方法库是您将想法变为现实的关键。如果您有任何问题或创新概念,我们鼓励您与我们分享。您的意见非常宝贵,我们对与您合作的可能性而感到兴奋。祝您探索成功!