Générez des messages d’accueil personnalisés en fonction du sexe avec la macro ONLYOFFICE

18 juillet 2023By Dasha

S’adresser correctement aux gens est crucial dans la communication, car cela témoigne du respect, de l’inclusion et du professionnalisme. Dans cet article, nous vous montrons comment créer une macro dans ONLYOFFICE Docs qui utilise l’API Genderize. io pour générer des messages d’accueil personnalisés.

Générez des messages d'accueil personnalisés en fonction du sexe avec la macro ONLYOFFICE

À propos de Genderize

Genderize.io est un service API qui détermine le sexe associé aux prénoms. Il offre aux développeurs un moyen simple d’intégrer la fonctionnalité d’identification du sexe dans leurs applications ou leurs scripts. En envoyant un nom comme paramètre à l’API Genderize, les utilisateurs reçoivent une réponse contenant le sexe prédit et des informations supplémentaires telles que le niveau de confiance de la prédiction. Genderize.io simplifie le processus de détermination du sexe associé à un nom donné.

Construction de la macro

Nous commençons par initialiser la variable oWorksheet, qui contient une référence à la feuille active. L’accès à la feuille active nous permet de manipuler les données de la feuille de calcul :

const oWorksheet = Api.GetActiveSheet()

Ensuite, nous initialisons la variable ROW à 2, ce qui représente la ligne de départ des données de la colonne A. Cette variable garde la trace de la ligne en cours de traitement :

 let ROW = 2

Pour traiter chaque ligne, nous disposons de la fonction checkRow. Son principal objectif est de parcourir chaque ligne et de gérer la logique de traitement. Dans la fonction checkRow, nous récupérons la valeur du nom de la ligne actuelle en utilisant l’instruction oWorksheet.GetRange(A${ROW}).GetText(). Cela permet de récupérer la valeur de texte de la cellule de la colonne A pour la ligne actuelle :

function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
}

Si le nom récupéré est vide, cela indique la fin des données. Dans ce cas, nous appelons la fonction reload, qui est chargée de recharger la feuille. En revanche, si le nom récupéré n’est pas vide, nous appelons la fonction makeRequest, en passant le nom en paramètre :

   function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
        if (name === '') {
            return reload()
        }
        makeRequest(name)
    }

La fonction makeRequest a pour but d’envoyer une requête AJAX à l’API Genderize :

function makeRequest(name) {
        $.ajax({
            url: `https://api.genderize.io?name=${name}`,
            dataType: 'json',
        }).done(successFunction)
    }

Une fois la réponse reçue de l’API Genderize, la fonction successFunction est invoquée. Dans la fonction successFunction, nous vérifions d’abord si la probabilité de la détermination du sexe est supérieure à 0,9. Si c’est le cas, nous attribuons le titre approprié en fonction de la valeur de genre de la réponse de l’API :

function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
        }
    }

Pour générer le message d’accueil personnalisé, nous utilisons la méthode oWorksheet.GetRange(B${ROW}).SetValue(…). Cette méthode nous permet de définir la valeur de la colonne B de la ligne actuelle. Après avoir traité avec succès la ligne en cours, nous incrémentons la variable ROW et appelons à nouveau la fonction checkRow. Cette approche récursive garantit que nous continuons à parcourir chaque ligne suivante jusqu’à ce que nous atteignions la fin des données :

function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
            oWorksheet.GetRange(`B${ROW}`).SetValue(`Dear ${title} ${data.name}!`)
        }
        ROW++
        checkRow()
    }

Une fois la fin des données détectée, nous invoquons la fonction de rechargement. L’objectif de cette fonction est de recharger la feuille, ce qui déclenche un nouveau calcul de toutes les formules. Pour ce faire, nous utilisons setInterval pour exécuter périodiquement la fonction Api.asc_calculate(Asc.c_oAscCalculateType.All), qui recalcule toutes les formules de la feuille :

    function reload() {
        let reload = setInterval(function(){
            Api.asc_calculate(Asc.c_oAscCalculateType.All);
        })    
    }
})()

Le code macro complet est le suivant :

(function()
{
    const oWorksheet = Api.GetActiveSheet()
    let ROW = 2
    checkRow()
    
    // Recursively request each name until 'A' column value is empty
    //
    // checkName -> makeRequest -> successFunction (ROW + 1) ->
    // checkName -> ... -> checkName -> name is empty -> reload
    function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
        if (name === '') {
            return reload()
        }
        makeRequest(name)
    }
    
    // Request
    function makeRequest(name) {
        $.ajax({
            url: `https://api.genderize.io?name=${name}`,
            dataType: 'json',
        }).done(successFunction)
    }
    // Response
    function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
            oWorksheet.GetRange(`B${ROW}`).SetValue(`Dear ${title} ${data.name}!`)
        }
        ROW++
        checkRow()
    }
    
    // Sheet has to be reloaded on changes
    function reload() {
        let reload = setInterval(function(){
            Api.asc_calculate(Asc.c_oAscCalculateType.All);
        })    
    }
})()

Exécutons notre macro et voyons comment elle fonctionne !

Nous espérons que cette macro vous aidera à simplifier la routine du courrier et vous permettra de vous concentrer sur d’autres aspects importants de votre flux de communication. En utilisant les macros, vous avez la possibilité de libérer tout le potentiel d’ONLYOFFICE et d’améliorer votre productivité.

Nous vous encourageons également à continuer à explorer les possibilités des macros dans ONLYOFFICE. Avec une meilleure compréhension des scripts, vous pouvez créer vos propres macros pour automatiser les tâches répétitives, améliorer la productivité et personnaliser vos documents en fonction de vos besoins spécifiques. Si vous avez des questions ou des idées à partager, n’hésitez pas à laisser des commentaires ou à nous contacter. Nous sommes ouverts à vos idées et désireux de collaborer avec vous. Nous vous souhaitons bonne chance dans vos démarches exploratoires !

Créez votre compte ONLYOFFICE gratuit

Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.