Abrufen von Website-Details mit dem Makro ONLYOFFICE
Im vorherigen Beitrag haben wir ein voll funktionsfähiges ONLYOFFICE-Makro auf der Grundlage einer VBA-Referenz erstellt, die uns von unserem Benutzer zugesandt wurde. Heute möchten wir einen Schritt weiter gehen und ihm einige Whois-API-Funktionen hinzufügen.
Über Whois
Whois, die Abkürzung für “Who is?”, ist ein wichtiges Internetprotokoll, das Benutzern den Zugriff auf umfassende Informationen über Domänennamen und IP-Adressen ermöglicht. Es dient als wertvolle Ressource für den Abruf von Details über den registrierten Eigentümer, administrative und technische Kontakte, Registrierungs- und Ablaufdaten, Domänennamenserver und sogar die für die Domänenregistrierung zuständige Organisation.
Zugriff auf die API
Um Zugang zur Whois-API zu erhalten, werden wir eine Lösung verwenden, die von der API Ninijas bereitgestellt wird.
Die API Ninjas Website ist eine Online-Plattform, die eine Vielzahl von Ressourcen und Einblicken in APIs bietet. Sie bietet auch eine Auswahl an kostenlosen APIs, die Entwickler in ihren Projekten verwenden können. Diese Website soll ein hilfreiches Ziel für Entwickler sein, die nach Informationen, Tools und praktischen Beispielen suchen, um ihre API-Entwicklungsfähigkeiten zu verbessern.
Die Plattform bietet Codefragmente, die bei der Erstellung von HHTP-Anfragen helfen:
var domain = 'example.com'
$.ajax({
method: 'GET',
url: 'https://api.api-ninjas.com/v1/whois?domain=' + domain,
headers: { 'X-Api-Key': 'your_API_key'},
contentType: 'application/json',
success: function(result) {
console.log(result);
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
Erstellung des Makros
Lassen Sie uns nun diese .ajax-Anfrage in unser Makro einbauen! Die ersten Zeilen unseres Codes bleiben intakt. Mit Ausnahme des Teils, in dem wir den Wert der Zelle A4 abgerufen haben. Diesmal genügt der Wert der Zelle A2:
var sheet = Api.GetActiveSheet();
var domainValue = sheet.GetRange("A2").GetValue();
var dateRange = sheet.GetRange("D1:D10");
Dann wird eine GET-Anfrage an den in der apiUrl-Variable angegebenen API-Endpunkt gestellt:
$.ajax({
method: 'GET',
url: apiUrl,
headers: { 'X-Api-Key': 'your_API_key' },
contentType: 'application/json',
success: function(result) {
console.log(result);
Nach einer erfolgreichen API-Antwort fahren wir mit der Verarbeitung der Daten fort. Wir konvertieren die UNIX-Zeitstempel für das Erstellungsdatum, das Ablaufdatum und das Aktualisierungsdatum mithilfe des Date-Objekts von JavaScript in für Menschen lesbare Formate. Diese formatierten Daten werden in Variablen wie formattedCreationDate, formattedExpirationDate und formattedUpdatedDate gespeichert:
// Convert creation_date to a more readable format
var unixTimestamp = result.creation_date;
var creationDate = new Date(unixTimestamp * 1000);
var formattedCreationDate = creationDate.toDateString();
// Convert expiration_date to a more readable format
var expirationTimestamp = result.expiration_date;
var expirationDate = new Date(expirationTimestamp * 1000);
var formattedExpirationDate = expirationDate.toDateString();
// Convert updated_date to a more readable format
var updatedTimestamp = result.updated_date;
var updatedDate = new Date(updatedTimestamp * 1000);
var formattedUpdatedDate = updatedDate.toDateString();
Um die Kalkulationstabelle mit den abgerufenen Domäneninformationen zu füllen, verwenden wir eine forEach-Schleife für die Variable dateRange. Diese Schleife durchläuft jede Zelle im angegebenen Bereich (D1:D10). Innerhalb der Schleife rufen wir die aktuelle Zeile mit range.GetRow() ab und speichern sie in der Variablen row:
var oRange = sheet.GetRange("E" + row);
Der aktuelle Wert der Zelle wird mit range.GetValue() ermittelt und in der Variablen currentValue gespeichert:
var currentValue = range.GetValue();
Auf der Grundlage des Wertes von currentValue verwenden wir eine switch-Anweisung, um die entsprechende Aktion zu bestimmen. Wenn currentValue beispielsweise “domain_name” ist, setzen wir den Wert von result.domain_name mit oRange.SetValue(result.domain_name) auf die entsprechende Zelle:
switch (currentValue) {
case "domain name":
oRange.SetValue(result.domain_name);
break;
Ähnlich behandeln wir andere Cases wie registrar, whois server, updated date, creation date, expiration date, name servers und dnssec:
oRange.SetValue(result.registrar);
break;
case "whois server":
oRange.SetValue(result.whois_server);
break;
case "updated date":
oRange.SetValue(formattedUpdatedDate);
break;
case "creation date":
oRange.SetValue(formattedCreationDate);
break;
case "expiration date":
oRange.SetValue(formattedExpirationDate);
break;
case "name servers":
oRange.SetValue(result.name_servers.join(", "));
break;
case "dnssec":
oRange.SetValue(result.dnssec);
break;
default:
// Handle other cases if needed
break;
}
});
Schließlich definieren wir eine Reload-Funktion, die die Methode Api.asc_calculate(Asc.c_oAscCalculateType.All) aufruft, um das Rechenblatt nach Abschluss der Schleife neu zu berechnen. Dadurch wird sichergestellt, dass die neu eingegebenen Werte in das Arbeitsblatt übernommen werden:
reload(); // Invoke reload function after the loop is completed
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
function reload() {
let reloadInterval = setInterval(function() {
Api.asc_calculate(Asc.c_oAscCalculateType.All);
}, 100);
}
Der gesamte Makrocode sieht wie folgt aus:
(function()
{
var sheet = Api.GetActiveSheet();
var domainValue = sheet.GetRange("A2").GetValue();
var dateRange = sheet.GetRange("D1:D10");
var apiUrl = 'https://api.api-ninjas.com/v1/whois?domain=' + domainValue;
$.ajax({
method: 'GET',
url: apiUrl,
headers: { 'X-Api-Key': 'your_API_key' },
contentType: 'application/json',
success: function(result) {
console.log(result);
// Convert creation_date to a more readable format
var unixTimestamp = result.creation_date;
var creationDate = new Date(unixTimestamp * 1000);
var formattedCreationDate = creationDate.toDateString();
// Convert expiration_date to a more readable format
var expirationTimestamp = result.expiration_date;
var expirationDate = new Date(expirationTimestamp * 1000);
var formattedExpirationDate = expirationDate.toDateString();
// Convert updated_date to a more readable format
var updatedTimestamp = result.updated_date;
var updatedDate = new Date(updatedTimestamp * 1000);
var formattedUpdatedDate = updatedDate.toDateString();
dateRange.ForEach(function(range) {
var row = range.GetRow();
var oRange = sheet.GetRange("E" + row);
var currentValue = range.GetValue();
switch (currentValue) {
case "domain name":
oRange.SetValue(result.domain_name);
break;
case "registrar":
oRange.SetValue(result.registrar);
break;
case "whois server":
oRange.SetValue(result.whois_server);
break;
case "updated date":
oRange.SetValue(formattedUpdatedDate);
break;
case "creation date":
oRange.SetValue(formattedCreationDate);
break;
case "expiration date":
oRange.SetValue(formattedExpirationDate);
break;
case "name servers":
oRange.SetValue(result.name_servers.join(", "));
break;
case "dnssec":
oRange.SetValue(result.dnssec);
break;
default:
// Handle other cases if needed
break;
}
});
reload(); // Invoke reload function after the loop is completed
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
function reload() {
let reloadInterval = setInterval(function() {
Api.asc_calculate(Asc.c_oAscCalculateType.All);
});
}
})();
Führen wir nun unser Makro aus und sehen wir, wie es funktioniert!
Wir hoffen, dass sich dieses Makro als nützliches Werkzeug für Ihre Projekte erweist, mit dem Sie wichtige Domänendetails effizient abrufen und anzeigen können. Die Flexibilität und Funktionalität, die die ONLYOFFICE API bietet, eröffnet enorme Möglichkeiten für die Anpassung und Automatisierung Ihrer Aufgaben.
Wir möchten Sie ermutigen, das Potenzial der ONLYOFFICE-API zu erkunden und Ihrer Kreativität freien Lauf zu lassen, indem Sie Ihre eigenen Makros erstellen. Wenn Sie Fragen oder Ideen haben, können Sie uns gerne einen Kommentar hinterlassen oder sich bei uns melden. Wir sind offen für Ihre Ideen und freuen uns auf die Zusammenarbeit mit Ihnen. Wir wünschen Ihnen viel Erfolg bei Ihren Erkundungen!
Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto
Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.