Abschneiden von Tabellenkalkulationsdaten nach einem bestimmten Schlüsselwort mit dem ONLYOFFICE-Makro

11 Juni 2024By Vlad

Letzten Monat haben wir ein Makro entwickelt, das den Inhalt von Rechenblattzellen löscht, wenn ein passendes Wort erkannt wurde. In diesem Blogbeitrag werden wir eine ähnliche Logik verwenden, um ein Makro zu erstellen, das alle Inhalte in einer Zelle nach einem bestimmten Wort löscht.

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

Erstellung des Makros

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

Zunächst erhalten wir das aktive Arbeitsblatt und die Auswahl in den Variablen oWorksheet und oRange und setzen das Wort, nach dem wir suchen wollen, in die Variable wordReference.

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

Als Nächstes durchlaufen wir mit einer forEach-Schleife die Zellen im ausgewählten Bereich, speichern den Zellwert in der Variablen cellValue und übergeben cellValue und das Wort an die Methode 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."
            );
        }

Mit der Bedingung (containsIndex !== -1) wird geprüft, ob das angegebene Wort im Zellwert enthalten ist. Wird das Wort gefunden, wird der Zellwert auf eine untergeordnete Zeichenfolge des ursprünglichen Wertes aktualisiert, wobei im Wesentlichen alles nach dem angegebenen Wort gelöscht wird.

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

Die Methode containsWord ist die Hauptfunktion in diesem Makro. Sie nimmt den Wert der Zelle und das zu suchende Wort als Parameter entgegen. Sie prüft, ob das Wort in der Zelle vorhanden ist, indem sie den Index des Wortes innerhalb des Zellinhalts ermittelt. Die Funktion gibt den Index zurück, an dem das Wort beginnt, oder ‘-1’, wenn das Wort nicht gefunden wird.

Der vollständige Makrocode

Hier ist der gesamte Code des Makros:

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

Lassen Sie uns nun unser Makro im Einsatz sehen.

Fertig! Dieses praktische Makro wurde entwickelt, um Zellwerte ohne großen Aufwand zu trimmen und Ihre Tabellenkalkulation zu verbessern. Durch die Unterstützung von Desktop- und Web-Editoren wird dieses Makro zu einer offensichtlichen Wahl in Ihrem Tabellenkalkulations-Toolkit.

Verpassen Sie nicht die Chance, die Leistungsfähigkeit der ONLYOFFICE API zu nutzen. Unsere umfangreiche Bibliothek von API-Methoden ist Ihr Schlüssel, um Ihre Ideen in die Realität umzusetzen. Wenn Sie Fragen oder innovative Konzepte haben, können Sie uns diese gerne mitteilen. Ihre Anregungen sind uns sehr wichtig, und wir freuen uns über die Möglichkeit der Zusammenarbeit mit Ihnen. Viel Erfolg!