Fonction personnalisée NSLOOKUP

Si vous voulez trouver les enregistrements DNS dans le tableur Google Sheets, vous pouvez créer une fonction NSLOOKUP avec les fonctions personnalisées.

Fonction NsLookup
Fonction NsLookup

Ainsi, en appelant l'API de Google, vous allez pouvoir interroger les serveurs DNS pour les types d'enregistrements souhaités.

Voici le code à votre disposition :
/**
* Effectuez une recherche de NSLOOKUP à l'aide de l'API DNS de Google.
*
* @param {"google.com"} domaine Un nom de domaine à résoudre.
* @param {"A"} type Type de données à renvoyer, telles que A, AAA, MX, NS ...
* @return {String} Réponse du serveur DNS
* @customfunction
*/
function NSLookup(type, domaine) {

if (typeof type == 'undefined') {
throw new Error('Paramètre 1 type DNS manquant');
}

if (typeof domaine == 'undefined') {
throw new Error('Paramètre 2 domaine manquant');
}

type = type.toUpperCase();

var url = 'https://dns.google.com/resolve?name='+ encodeURIComponent(domaine) + '&type=' + encodeURIComponent(type);
var options = {
"muteHttpExceptions": true,
"headers": {
"accept": "application/dns-json"
}
};

var resultat = UrlFetchApp.fetch(url, options);
var rc = resultat.getResponseCode();
var resultatTexte = resultat.getContentText();

if (rc !== 200) {
throw new Error(rc);
}

var errors = [
{ "name": "NoError", "description": "Aucune erreur"}, // 0
{ "name": "FormErr", "description": "Erreur de format"}, // 1
{ "name": "ServFail", "description": "Échec du serveur"}, // 2
{ "name": "NXDomain", "description": "Domaine inconnu"}, // 3
{ "name": "NotImp", "description": "Non implanté"}, // 4
{ "name": "Refused", "description": "Requête refusée"}, // 5
{ "name": "YXDomain", "description": "Name Exists when it should not"}, // 6
{ "name": "YXRRSet", "description": "RR Set Exists when it should not"}, // 7
{ "name": "NXRRSet", "description": "RR Set that should exist does not"}, // 8
{ "name": "NotAuth", "description": "Non autorisé"} // 9
];

var response = JSON.parse(resultatTexte);

if (response.Status !== 0) {
return errors[response.Status].description;
}

var donneesDeSortie = [];

for (var i in response.Answer) {
donneesDeSortie.push(response.Answer[i].data);
}

var texteDonnees = donneesDeSortie.join(',');

return texteDonnees;

}
Et ça donne ceci :