Genera le mail personalizzate con la macro ONLYOFFICE
Rivolgersi correttamente alle persone è fondamentale nella comunicazione in quanto mostra rispetto, inclusività e professionalità. In questo articolo, ti mostriamo come creare una macro in ONLYOFFICE Docs che utilizza l’API Genderize.io per generare saluti personalizzati adeguati.
Informazioni su Genderize
Genderize.io è un servizio API che prevede il genere associato a determinati nomi. Fornisce agli sviluppatori un modo semplice per integrare la funzionalità di identificazione del genere nelle loro applicazioni o script. Inviando un nome come parametro all’API Genderize, gli utenti ricevono una risposta contenente il sesso previsto e informazioni aggiuntive come il livello di confidenza della previsione. Genderize.io semplifica il processo di determinazione del genere associato a un determinato nome.
Costruzione della macro
Iniziamo inizializzando la variabile oWorksheet, che contiene un riferimento al foglio attivo. L’accesso al foglio attivo ci consente di manipolare i dati all’interno del foglio di calcolo:
const oWorksheet = Api.GetActiveSheet()
Successivamente, inizializziamo la variabile ROW su 2, che rappresenta la riga iniziale dei dati nella colonna A. Questa variabile tiene traccia della riga corrente in fase di elaborazione:
let ROW = 2
Per elaborare ogni riga, abbiamo la funzione checkRow. Il suo obiettivo principale è scorrere ogni riga e gestire la logica di elaborazione. All’interno della funzione checkRow, recuperiamo il valore del nome della riga corrente utilizzando l’istruzione oWorksheet.GetRange(A${ROW}).GetText(). Questo recupera il valore di testo della cella nella colonna A per la riga corrente
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
}
Se il nome recuperato è vuoto, indica la fine dei dati. In questo caso, chiamiamo la funzione reload, che è responsabile del ricaricamento del foglio. Se invece il nome recuperato non è vuoto, procediamo a chiamare la funzione makeRequest, passando il nome come parametro:
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
if (name === '') {
return reload()
}
makeRequest(name)
}
Lo scopo della funzione makeRequest è inviare una richiesta AJAX all’API Genderize:
function makeRequest(name) {
$.ajax({
url: `https://api.genderize.io?name=${name}`,
dataType: 'json',
}).done(successFunction)
}
Una volta ricevuta la risposta dall’API Genderize, viene richiamata successFunction. All’interno della successFunction, controlliamo innanzitutto se la probabilità della determinazione del genere è maggiore di 0,9. Se lo è, assegniamo il titolo appropriato in base al valore di genere dalla risposta API:
function successFunction(data) {
if (data.probability > 0.9) {
let title = data.gender === 'male' ? 'Mr' : 'Ms'
}
}
Per generare il saluto personalizzato, utilizziamo il metodo oWorksheet.GetRange(B${ROW}).SetValue(…). Questo ci permette di impostare il valore nella colonna B della riga corrente. Dopo aver elaborato correttamente la riga corrente, incrementiamo la variabile ROW e quindi chiamiamo nuovamente la funzione checkRow. Questo approccio ricorsivo assicura che continuiamo a scorrere ogni riga successiva fino a raggiungere la fine dei dati:
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()
}
Una volta rilevata la fine dei dati, invochiamo la funzione reload. Lo scopo di questa funzione è ricaricare il foglio, attivando un ricalcolo di tutte le formule. Per ottenere ciò, utilizziamo setInterval per eseguire periodicamente la funzione Api.asc_calculate(Asc.c_oAscCalculateType.All), che ricalcola tutte le formule nel foglio:
function reload() {
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
})
}
})()
L’intero codice della macro è il seguente:
(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);
})
}
})()
Eseguiamo la nostra macro e vediamo come funziona!
Ci auguriamo che questa macro possa essere utile per semplificare la routine di invio e consentirti di concentrarti su altri aspetti importanti del tuo flusso di lavoro di comunicazione. Utilizzando le macro, hai l’opportunità di sbloccare tutto il potenziale di ONLYOFFICE e migliorare la tua produttività.
Ti invitiamo inoltre a continuare a esplorare le possibilità delle macro in ONLYOFFICE. Con una comprensione più approfondita dello scripting, puoi creare le tue macro per automatizzare le attività ripetitive, migliorare la produttività e personalizzare i tuoi documenti in base alle tue esigenze specifiche. Se hai domande o idee da condividere, sentiti libero di lasciare commenti o conttatarci.