Gere saudações personalizadas baseadas em gênero com a macro ONLYOFFICE
Abordar as pessoas corretamente é crucial na comunicação, pois mostra respeito, inclusão e profissionalismo. Neste artigo, mostramos como criar uma macro em ONLYOFFICE Docs que utiliza a API Genderize.io para gerar saudações personalizadas adequadas.
Sobre Genderize
Genderize.io é um serviço de API que prevê o gênero associado a determinados nomes. Ele fornece aos desenvolvedores uma maneira fácil de integrar a funcionalidade de identificação de gênero em seus aplicativos ou scripts. Ao enviar um nome como parâmetro para a API Genderize, os usuários recebem uma resposta contendo o gênero previsto e informações adicionais, como o nível de confiança da previsão. Genderize.io simplifica o processo de determinação do gênero associado a um determinado nome.
Construindo a macro
Começamos inicializando a variável oWorksheet, que contém uma referência à planilha ativa. Ter acesso à planilha ativa nos permite manipular os dados dentro da planilha:
const oWorksheet = Api.GetActiveSheet()
Em seguida, inicializamos a variável ROW com 2, representando a linha inicial dos dados na coluna A. Essa variável acompanha a linha atual que está sendo processada:
let ROW = 2
Para processar cada linha, temos a função checkRow. Seu principal objetivo é percorrer cada linha e manipular a lógica de processamento. Dentro da função checkRow, recuperamos o valor do nome da linha atual usando a instrução oWorksheet.GetRange(A${ROW}).GetText(). Isso recupera o valor de texto da célula na coluna A para a linha atual:
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
}
Se o nome recuperado estiver vazio, indica o fim dos dados. Neste caso, chamamos a função reload, que é responsável por recarregar a planilha. Por outro lado, se o nome recuperado não estiver vazio, passamos a chamar a função makeRequest, passando o nome como parâmetro:
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
if (name === '') {
return reload()
}
makeRequest(name)
}
O objetivo da função makeRequest é enviar uma solicitação AJAX para a API Genderize:
function makeRequest(name) {
$.ajax({
url: `https://api.genderize.io?name=${name}`,
dataType: 'json',
}).done(successFunction)
}
Depois que a resposta é recebida da API Genderize, o successFunction é invocado. Dentro do successFunction, primeiro verificamos se a probabilidade da determinação do gênero é maior que 0,9. Se for, atribuímos o título apropriado com base no valor de gênero da resposta da API:
function successFunction(data) {
if (data.probability > 0.9) {
let title = data.gender === 'male' ? 'Mr' : 'Ms'
}
}
Para gerar a saudação personalizada, utilizamos o método oWorksheet.GetRange(B${ROW}).SetValue(…). Isso nos permite definir o valor na coluna B da linha atual. Depois de processar com sucesso a linha atual, incrementamos a variável ROW e então chamamos a função checkRow novamente. Essa abordagem recursiva garante que continuemos iterando em cada linha subseqüente até chegarmos ao final dos dados:
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()
}
Uma vez detectado o fim dos dados, invocamos a função reload. O objetivo desta função é recarregar a planilha, acionando um recálculo de todas as fórmulas. Para isso, usamos setInterval para executar periodicamente a função Api.asc_calculate(Asc.c_oAscCalculateType.All), que recalcula todas as fórmulas da planilha:
function reload() {
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
})
}
})()
Todo o código da macro é o seguinte:
(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);
})
}
})()
Vamos rodar nossa macro e ver como funciona!
Esperamos que esta macro seja útil para simplificar a rotina de correspondência e permitir que você se concentre em outros aspectos importantes do seu fluxo de trabalho de comunicação. Ao utilizar macros, você tem a oportunidade de liberar todo o potencial do ONLYOFFICE e aumentar sua produtividade.
Também encorajamos você a continuar explorando as possibilidades de macros no ONLYOFFICE. Com uma compreensão mais profunda de scripts, você pode criar suas próprias macros para automatizar tarefas repetitivas, aumentar a produtividade e personalizar seus documentos para atender às suas necessidades específicas. Se você tiver alguma dúvida ou ideia para compartilhar, sinta-se à vontade para deixar comentários ou fale conosco. Estamos abertos para ouvir suas ideias e estamos ansiosos para colaborar com você. Boa sorte em seus esforços exploratórios!
Crie sua conta gratuita no ONLYOFFICE
Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.