Come tagliare i dati di un foglio di calcolo dopo una parola chiave specifica utilizzando la macro ONLYOFFICE

7 giugno 2024By Alice

Il mese scorso abbiamo sviluppato una macro per eliminare il contenuto delle celle del foglio di calcolo quando viene rilevata una parola corrispondente. In questo post utilizzeremo una logica simile per creare una macro che elimina tutto il contenuto di una cella dopo una parola specifica.

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

Costruzione della macro

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

Per cominciare, otteniamo il foglio di lavoro attivo e la selezione nelle variabili oWorksheet e oRange, e impostiamo la parola che vogliamo cercare nella variabile wordReference.

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

Successivamente, usando un ciclo forEach, iteriamo le celle dell’intervallo selezionato, memorizziamo il valore della cella nella variabile cellValue, e passiamo il cellValue e la parola al metodo 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 condizione (containsIndex !== -1) verifica la presenza della parola specificata nel valore della cella. Se la parola viene trovata, il valore della cella viene aggiornato a una sottostringa del valore originale, eliminando tutto ciò che viene dopo la parola specificata.

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

Il metodo containsWord è la funzione principale di questa macro: prende come parametri il valore della cella e la parola da cercare, e verifica se la parola è presente nella cella trovando l’indice della parola all’interno del contenuto della cella. La funzione ritorna l’indice in cui inizia la parola o ‘-1’ se la parola non viene trovata.

Il codice completo della macro

Ecco il codice completo della 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;
    }
})();

Ora diamo un’occhiata alla macro in azione.

Ecco fatto! Questa pratica macro è stata progettata per ritagliare i valori delle celle senza sforzi, migliorando l’esperienza di lavoro nel foglio di calcolo. Grazie al supporto per gli editor desktop e web, questa macro diventa una scelta ovvia nel tuo kit di strumenti per i fogli di calcolo.

Non perdere l’occasione di sfruttare la potenza dell’API di ONLYOFFICE. La nostra vasta libreria di metodi API è la chiave per trasformare le tue idee in realtà. Se hai domande o concetti innovativi, ti invitiamo a condividerli con noi. Il tuo contributo è molto prezioso e siamo entusiasti della possibilità di collaborare con te. In bocca al lupo!