如何使用 ONLYOFFICE 宏删除特定单词后的电子表格数据

2024年06月11日作者: Alina

上个月,我们开发了一个宏,当检测到匹配的词时删除电子表格单元格的内容。在这篇博客文章中,我们将使用类似的逻辑来创建一个宏,用于删除单元格中特定单词后的所有内容。

How to trim spreadsheet data after a specific keyword using ONLYOFFICE macro

构建

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

首先,我们在 oWorksheet 和 oRange 变量中获取活动工作表和选区,并在 wordReference 变量中设置我们要搜索的词。

oRange.ForEach(function (range) {
        const cellValue = oWorksheet.GetRange(range).GetValue().trim();
        const containsIndex = containsWord(cellValue, wordReference);

接下来,使用 forEach 循环,我们遍历选定范围内的单元格,将单元格的值存储在 cellValue 变量中,并将 cellValue 和要搜索的词传递给 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."
            );
        }

条件 ‘(containsIndex !== -1)’ 检查单元格值中是否存在指定的词。如果找到该词,则单元格值将更新为原始值的子字符串,实质上删除了指定词后的所有内容。

    function containsWord(sentence, word) {
        const trimmedSentence = sentence.trim();
        const trimmedWord = word.trim();
        const index = trimmedSentence
            .toLowerCase()
            .indexOf(trimmedWord.toLowerCase());
        return index;
    }

containsWord 方法是该宏的核心函数。它将单元格的值和要搜索的词作为参数。通过查找该词在单元格内容中的索引来检查该词是否存在。该函数返回该词开始的索引,如果未找到该词,则返回 ‘-1’。

完整的宏代码

以下是宏的完整代码:

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

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

就是这样!这个便捷的宏旨在轻松删除单元格值,提升您的电子表格体验。无论是在桌面版还是网页版编辑器中,这个宏都是您电子表格工具箱中的理想选择。

不要错过利用 ONLYOFFICE API 强大功能的机会。我们丰富的 API 方法库是将您的想法变为现实的关键。如果您有任何问题或创新概念,欢迎您与我们分享。您的意见非常宝贵,我们非常期待与您进行合作。祝您探索成功!