Google Public DNSを利用して、指定したタイプ、ラベルのリソースレコードを取得するGoogle Apps Scriptです。登録値の確認や変更時の反映確認に使えるかも。
特にありません。今お使いのスプレッドシートに組み込めます。
A列とB列にそれぞれ「タイプ」と「ラベル」を入力しておきます。
たとえばmyfunc.jpのAレコードを調べたい場合は、タイプが「A」、ラベルが「myfunc.jp」となります。
準備が終わったら上部のメニューから「DNSレコードを取得する」を実行します。
C列に結果が書き込まれました。複数のレコードが返ってきた場合は改行して表示しています。
存在しないタイプとラベルの組み合わせや、そもそもそのドメインが存在しない場合等は結果の列に書き込まれません。
Google Public DNSへはGAS(クラウド側)から問い合わせています。そのため自分のPCでの名前解決結果とは異なる場合があります。監視用途で使う場合はこの点にご注意ください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00044/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('DNSレコードを取得する', 'get_dns_resource_record');
// メニューを画面に追加する
menu.addToUi();
}
function get_dns_resource_record() {
// アクティブなスプレッドシート、シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// シートが使用されている範囲を取得
let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
// 値を取得する
const values = range.getValues();
// 値が存在する限り、DNSサーバへのデータ取得を実行する
for (let i = 1; i < values.length; i++) {
// Google Public DNS over HTTPSを利用して、クエリを送信する
let url = 'https://dns.google.com/resolve?name=' + values[i][1] + '&type=' + values[i][0];
// レスポンスからテキストを取得
let response = UrlFetchApp.fetch(url).getContentText();
// JSONの文字列からオブジェクトに変換
let json = JSON.parse(response);
// キー名:Answerにリソースレコードが格納されるが、存在しないラベル、タイプの組み合わせだと返ってこない。
// 無い場合は何もせずにスキップする。
if (!json['Answer']) {
continue;
}
// 結果を格納する配列を用意
let result = [];
// Answerは複数存在しうるため、ループして結果用配列に格納する
for (let j = 0; j < json['Answer'].length; j++) {
result.push(json['Answer'][j]['data']);
}
// 取得結果(C列)に結果を書き込む
range = sheet.getRange(i + 1, 3, 1, 1);
range.setValue(result.join('\n'));
}
}
気象庁が公開しているJSONファイルから今日、明日、明後日の天気予報を取得するGoogle Apps Scriptです。
NHKが提供している番組表APIを利用して、スプレッドシートに番組表を書き出すGoogle Apps Scriptです。見たい・録画したい番組を探す時などにどうぞ。
指定した地域の天気予報を取得し、明日が猛暑日の予想であればメールで通知するGoogle Apps Scriptです。遠方に住んでいる親類に熱中症予防を呼びかけるきっかけにどうぞ。
chatGPTのAPIを使用し、スプレッドシートに書き込んだ質問にまとめて答えてもらうGoogle Apps Scriptです。消費したトークンも同時に記録します。