Erstellen Sie personalisierte geschlechtsspezifische Begrüßungen mit dem ONLYOFFICE-Makro
Die richtige Anrede ist in der Kommunikation von entscheidender Bedeutung, denn sie zeugt von Respekt, Offenheit und Professionalität. In diesem Artikel zeigen wir Ihnen, wie Sie in ONLYOFFICE Docs ein Makro erstellen, das die Genderize.io API nutzt, um korrekte personalisierte Begrüßungen zu generieren.
Über Genderize
Genderize.io ist ein API-Dienst, der das mit Vornamen verbundene Geschlecht vorhersagt. Er bietet Entwicklern eine einfache Möglichkeit, Funktionen zur Geschlechtsidentifizierung in ihre Anwendungen oder Skripte zu integrieren. Indem ein Name als Parameter an die Genderize-API gesendet wird, erhalten die Benutzer eine Antwort mit dem vorhergesagten Geschlecht und zusätzlichen Informationen, wie z. B. dem Vertrauensniveau der Vorhersage. Genderize.io vereinfacht den Prozess der Bestimmung des Geschlechts, das mit einem bestimmten Namen verbunden ist.
Erstellung des Makros
Wir beginnen mit der Initialisierung der Variablen oWorksheet, die einen Verweis auf das aktive Blatt enthält. Durch den Zugriff auf das aktive Blatt können wir die Daten innerhalb des Arbeitsblatts manipulieren:
const oWorksheet = Api.GetActiveSheet()
Als Nächstes initialisieren wir die Variable ROW auf 2, was die Anfangszeile der Daten in Spalte A darstellt. Diese Variable verfolgt die aktuell bearbeitete Zeile:
let ROW = 2
Um jede Zeile zu verarbeiten, haben wir die Funktion checkRow. Ihr Hauptziel ist es, jede Zeile zu durchlaufen und die Verarbeitungslogik zu verarbeiten. Innerhalb der Funktion checkRow wird der Namenswert der aktuellen Zeile mit der Bestätigung oWorksheet.GetRange(A${ROW}).GetText() abgerufen. Dadurch wird der Textwert der Zelle in Spalte A für die aktuelle Zeile abgerufen:
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
}
Wenn der abgefragte Name leer ist, bedeutet dies das Ende der Daten. In diesem Fall rufen wir die Funktion reload auf, die für das Neuladen des Blattes zuständig ist. Ist der abgefragte Name hingegen nicht leer, rufen wir die Funktion makeRequest auf und übergeben den Namen als Parameter:
function checkRow() {
const name = oWorksheet.GetRange(`A${ROW}`).GetText()
if (name === '') {
return reload()
}
makeRequest(name)
}
Der Zweck der makeRequest-Funktion ist es, eine AJAX-Anfrage an die Genderize-API zu senden:
function makeRequest(name) {
$.ajax({
url: `https://api.genderize.io?name=${name}`,
dataType: 'json',
}).done(successFunction)
}
Sobald die Antwort von der Genderize API eingegangen ist, wird die successFunction aufgerufen. Innerhalb der successFunction wird zunächst geprüft, ob die Wahrscheinlichkeit der Geschlechtsbestimmung größer als 0,9 ist. Ist dies der Fall, wird der entsprechende Titel auf der Grundlage des Geschlechtswertes aus der API-Antwort zugewiesen:
function successFunction(data) {
if (data.probability > 0.9) {
let title = data.gender === 'male' ? 'Mr' : 'Ms'
}
}
Um die personalisierte Begrüßung zu erzeugen, verwenden wir die Methode oWorksheet.GetRange(B${ROW}).SetValue(…). Damit können wir den Wert in Spalte B der aktuellen Zeile setzen. Nach erfolgreicher Verarbeitung der aktuellen Zeile wird die Variable ROW inkrementiert und anschließend die Funktion checkRow erneut aufgerufen. Dieser rekursive Ansatz stellt sicher, dass wir jede weitere Zeile durchlaufen, bis wir das Ende der Daten erreicht haben:
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()
}
Sobald das Ende der Daten erkannt wird, rufen wir die Funktion reload auf. Der Zweck dieser Funktion ist es, das Blatt neu zu laden und damit eine Neuberechnung aller Formeln auszulösen. Um dies zu erreichen, verwenden wir setInterval, um die Funktion Api.asc_calculate(Asc.c_oAscCalculateType.All) periodisch auszuführen, die alle Formeln im Blatt neu berechnet:
function reload() {
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
})
}
})()
Der gesamte Makrocode lautet wie folgt:
(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);
})
}
})()
Führen wir unser Makro aus und sehen wir, wie es funktioniert!
Wir hoffen, dass dieses Makro Ihnen bei der Vereinfachung Ihrer Mailing-Routine behilflich sein wird und Sie sich auf andere wichtige Aspekte Ihres Kommunikations-Workflows konzentrieren können. Durch den Einsatz von Makros haben Sie die Möglichkeit, das volle Potenzial von ONLYOFFICE auszuschöpfen und Ihre Produktivität zu steigern.
Wir möchten Sie ermutigen, die Möglichkeiten von Makros in ONLYOFFICE weiter zu erforschen. Mit einem tieferen Verständnis der Skripterstellung können Sie Ihre eigenen Makros erstellen, um sich wiederholende Aufgaben zu automatisieren, die Produktivität zu steigern und Ihre Dokumente an Ihre speziellen Bedürfnisse anzupassen. Wenn Sie Fragen oder Ideen haben, können Sie uns gerne einen Kommentar hinterlassen oder uns kontaktieren. Wir sind offen für Ihre Ideen und freuen uns auf die Zusammenarbeit mit Ihnen. Wir wünschen Ihnen viel Erfolg bei Ihren Erkundungen!