I. À propos de macros ONLYOFFICE▲
En ce qui concerne l'automatisation des tâches, ONLYOFFICE Docs n'est pas compatible avec les macros VBA de Microsoft. Il utilise des macros JavaScript qui sont capables de réaliser les mêmes opérations de manière beaucoup plus sûre.
ONLYOFFICE utilise JavaScript pour les macros pour les raisons suivantes :
- Elles sont multiplateformes. Contrairement à Visual Basic de Microsoft Office, JavaScript est un langage de programmation plus courant. Par conséquent, les macros JavaScript peuvent facilement être exécutées sur les plateformes Windows, Linux et macOS.
- Elles sont faciles à utiliser. JavaScript est souvent recommandé aux débutants et sa communauté est en pleine expansion. De nombreuses personnes choisissent JavaScript comme premier langage de programmation parce qu'il existe de nombreux tutoriels et guides détaillés sur l'Internet.
- Les macros ONLYOFFICE sont plus sécurisées, car elles n'ont aucun accès au système. Le code JavaScript des macros ONLYOFFICE s'exécute dans la même fenêtre que les éditeurs. Par conséquent, les attaquants ne peuvent pas l'utiliser pour compromettre votre système, parce qu'ils n'y ont pas accès.
II. À propos de Whois▲
Whois, abréviation de « Who is ? », est un protocole Internet essentiel qui permet aux utilisateurs d’accéder à des informations complètes sur les noms de domaine et les adresses IP. Il s’agit d’une ressource précieuse pour obtenir des détails sur le propriétaire enregistré, les contacts administratifs et techniques, les dates d’enregistrement et d’expiration, les serveurs de noms de domaine et même l’organisation responsable de l’enregistrement du domaine.
III. Accès à l’API▲
Afin d’obtenir un accès à l’API Whois, nous utiliserons une solution fournie par l’API Ninjas.
Le site web API Ninjas est une plateforme en ligne qui offre une variété de ressources et d’informations sur les API. Il fournit également une sélection d’API gratuites que les développeurs peuvent utiliser dans leurs projets. Ce site web se veut une destination utile pour les développeurs à la recherche d’informations, d’outils et d’exemples pratiques pour améliorer leurs compétences en matière de développement d’API.
La plateforme propose des extraits de code qui aident à effectuer des requêtes HHTP :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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);
}
}
);
IV. Construction de la macro▲
Maintenant, intégrons cette requête .ajax dans notre macro ! Les premières lignes de notre code restent intactes. À l’exception de la partie où nous avons récupéré la valeur de la cellule A4. Cette fois, la valeur de la cellule A2 suffit :
Ensuite, nous lançons une requête GET vers le point de terminaison de l’API spécifié dans la variable apiUrl :
2.
3.
4.
5.
6.
7.
$.ajax
({
method
:
'GET'
,
url
:
apiUrl,
headers
:
{
'X-Api-Key'
:
'your_API_key'
},
contentType
:
'application/json'
,
success
:
function(
result) {
console.log
(
result);
Lorsque la réponse de l’API est positive, nous procédons au traitement des données. Nous convertissons les horodatages UNIX de la date de création, de la date d’expiration et de la date de mise à jour en formats lisibles par l’homme à l’aide de l’objet Date de JavaScript. Ces dates formatées sont stockées dans des variables telles que formattedCreationDate, formattedExpirationDate et formattedUpdatedDate :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
// 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
(
);
Pour remplir la feuille de calcul avec les informations de domaine récupérées, nous utilisons une boucle forEach sur la variable dateRange. Cette boucle parcourt chaque cellule de la plage spécifiée (D1:D10). À l’intérieur de la boucle, nous récupérons la ligne actuelle à l’aide de range.GetRow
(
) et la stockons dans la variable row :
var oRange =
sheet.GetRange
(
GUILLEMET-
KITOOODVPEGUILLEMET-
KITOOODVP +
row);
La valeur actuelle de la cellule est obtenue à l’aide de range.GetValue() et stockée dans la variable currentValue : var currentValue =
range.GetValue
(
);
.
En fonction de la valeur de currentValue, nous utilisons une instruction switch pour déterminer l’action appropriée. Par exemple, si currentValue est « nom de domaine », nous fixons la valeur de result.domain_name à la cellule correspondante en utilisant oRange.SetValue
(
result.
domain_name) :
De même, nous traitons d’autres cas tels que registraire, serveur whois, date de mise à jour, date de création, date d’expiration, serveurs de noms et dnssec :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
oRange.SetValue
(
result.
registrar);
break;
case GUILLEMET-
KITOOODVPwhois serverGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
result.
whois_server);
break;
case GUILLEMET-
KITOOODVPupdated dateGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
formattedUpdatedDate);
break;
case GUILLEMET-
KITOOODVPcreation dateGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
formattedCreationDate);
break;
case GUILLEMET-
KITOOODVPexpiration dateGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
formattedExpirationDate);
break;
case GUILLEMET-
KITOOODVPname serversGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
result.
name_servers.join
(
GUILLEMET-
KITOOODVP,
GUILLEMET-
KITOOODVP));
break;
case GUILLEMET-
KITOOODVPdnssecGUILLEMET-
KITOOODVP
:
oRange.SetValue
(
result.
dnssec);
break;
default
:
// Handle other cases if needed
break;
}
}
);
Enfin, nous définissons une fonction de rechargement qui invoque la méthode Api.asc_calculate(Asc.c_oAscCalculateType.All) pour recalculer la feuille de calcul une fois la boucle terminée. Cela permet de s’assurer que les valeurs nouvellement renseignées sont reflétées dans la feuille de calcul :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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
);
}
V. Code complet de la macro▲
Nous espérons que cette macro s’avérera un outil utile pour vos projets, vous permettant de récupérer et d’afficher efficacement les détails importants d’un domaine.
VI. Ressources utiles▲
VII. Remerciements Developpez.com▲
Nous tenons à remercier Malick pour la mise au gabarit et escartefigue pour la relecture orthographique.