これはワタクシの備忘録。
ウェブサイトを安全・安心・安定の「3定」に取り組むべくw、明らかに不正な接続元のIPアドレスをGoogleスプレッドシートに記録している。
これらのIPアドレスは、例えば、htaccess ファイルにIPアドレスを書き込んで接続を断つようにする訳だが、その際に、スプレッドシート上で IPアドレスを「昇順」に並べ替えしてから、IPアドレスをコピーして書き込むようにしたい願望がでてきた。(^^ゞ
そこで、GoogleスプレッドシートのApps Scriptで書いたコードをバックアップの意味で控えておく。
A列にIPアドレス、B〜E列に分解した文字列を記録、最後にB〜E列の順で並べ替え設定を実行するコード。
function splitIPsToMultipleColumns() {
const sheet = SpreadsheetApp.getActiveSheet();
const startRow = 2;
const columnA = 1;
const columnB = 2;
const columnC = 3;
const columnD = 4;
const columnE = 5;
const lastRow = sheet.getLastRow();
const ipAddresses = sheet.getRange(startRow, columnA, lastRow - startRow + 1, 1).getValues().flat();
const results = ipAddresses.map(ip => {
const octets = ip.split('.').filter(octet => octet !== '');
// 4列に収まるように、足りない部分は空文字列で埋める
while (octets.length < 4) {
octets.push('');
}
return octets.map(octet => [octet]);
});
sheet.getRange(startRow, columnB, results.length, 4).setValues(results);
// 並べ替え対象範囲を取得
const range = sheet.getRange(startRow, columnA, results.length, 5);
// B, C, D, E列を複合キーとして昇順にソート
range.sort([{ column: columnB, ascending: true },
{ column: columnC, ascending: true },
{ column: columnD, ascending: true },
{ column: columnE, ascending: true }]);
}
IPアドレスを調べたりしてリスト化する時に参考になるかも。
誰かのお役に立てれば幸いです。