Comment couper les données d’une feuille de calcul après un mot clé spécifique en utilisant la macro ONLYOFFICE

7 juin 2024By Dasha

Le mois dernier, nous avons développé une macro permettant de supprimer le contenu des cellules d’une feuille de calcul lorsqu’un mot correspondant était détecté. Dans cet article, nous utiliserons une logique similaire pour créer une macro qui supprime tout le contenu d’une cellule après un mot spécifique. How to trim spreadsheet data after a specific keyword using ONLYOFFICE macro

Construction de la macro

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

Pour commencer, nous obtenons la feuille de calcul active et la sélection dans les variables oWorksheet et oRange, et nous définissons le mot que nous voulons rechercher dans la variable wordReference.

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

Ensuite, à l’aide d’une boucle forEach, nous parcourons les cellules de la plage sélectionnée, stockons la valeur de la cellule dans la variable cellValue et transmettons la cellValue et le mot à la méthode 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 condition « (containsIndex !== -1) » vérifie la présence du mot spécifié dans la valeur de la cellule. Si le mot est trouvé, la valeur de la cellule est mise à jour en une sous-chaîne de la valeur originale, supprimant essentiellement tout ce qui se trouve après le mot spécifié.

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

La méthode containsWord est la fonction principale de cette macro. Elle prend comme paramètres la valeur de la cellule et le mot à rechercher. Elle vérifie si le mot est présent dans la cellule en trouvant l’index du mot dans le contenu de la cellule. La fonction renvoie l’indice où le mot commence, ou ‘-1’ si le mot n’est pas trouvé.

Code complet de la macro

Voici le code complet 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;
    }
})();

Voyons maintenant notre macro en action.

Voilà, c’est fait ! Cette macro pratique est conçue pour découper les valeurs des cellules sans trop d’effort, améliorant ainsi votre expérience de la feuille de calcul. Avec un support pour les éditeurs de bureau et web, cette macro devient un choix évident dans votre boîte à outils de feuille de calcul. Ne manquez pas l’occasion d’exploiter la puissance de l’API ONLYOFFICE. Notre vaste bibliothèque de méthodes API est votre clé pour transformer vos idées en réalité. Si vous avez des questions ou des concepts innovants, nous vous encourageons à les partager avec nous. Votre contribution est très appréciée et nous sommes ravis de pouvoir collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !