😸
GASでURLからルートドメインのみを取り出す方法を解説
ルートドメインのみを取り出すGASのコードを作成しました。
function extractRootDomain() {
var spreadsheetId = 'スプレッドシートID';
var sheetId = 'シートID';
var sheet = getSheetById(spreadsheetId, sheetId);
var urls = sheet.getRange('C2:C' + sheet.getLastRow()).getValues();
var rootDomains = [];
for (var i = 0; i < urls.length; i++) {
var url = urls[i][0];
if (url) {
var rootDomain = getRootDomain(url);
rootDomains.push([rootDomain]);
} else {
rootDomains.push(['']);
}
}
sheet.getRange(2, 1, rootDomains.length, 1).setValues(rootDomains);
}
function getRootDomain(url) {
try {
var hostname = (new URL(url)).hostname;
var parts = hostname.split('.').slice(-2);
return parts.join('.');
} catch (e) {
return ''; // URLが不正な場合、空文字を返す
}
}
function getSheetById(spreadsheetId, sheetId) {
var sheets = SpreadsheetApp.openById(spreadsheetId).getSheets();
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetId() == sheetId) {
return sheets[i];
}
}
return null;
}
このコードは、Google Apps Scriptを使用してGoogleスプレッドシート内のURLリストからルートドメインを抽出し、それを同じシートの指定された範囲に出力するスクリプトです。具体的な動作を説明します。
extractRootDomain
関数
-
スプレッドシートとシートの指定:
var spreadsheetId = 'スプレッドシートのID'; var sheetId = 'シートID'; var sheet = getSheetById(spreadsheetId, sheetId);
-
spreadsheetId
とsheetId
を指定して、操作対象のシートを取得します。
-
-
URLの取得:
var urls = sheet.getRange('C2:C' + sheet.getLastRow()).getValues();
- シートの
C2
から最終行までのURLを取得します。
- シートの
-
ルートドメインの抽出:
var rootDomains = []; for (var i = 0; i < urls.length; i++) { var url = urls[i][0]; if (url) { var rootDomain = getRootDomain(url); rootDomains.push([rootDomain]); } else { rootDomains.push(['']); } }
- 取得したURLリストをループし、
getRootDomain
関数を使ってルートドメインを抽出し、rootDomains
配列に格納します。
- 取得したURLリストをループし、
-
結果の出力:
sheet.getRange(2, 1, rootDomains.length, 1).setValues(rootDomains);
- 抽出したルートドメインをシートの
A2
から出力します。
- 抽出したルートドメインをシートの
getRootDomain
関数
function getRootDomain(url) {
try {
var hostname = (new URL(url)).hostname;
var parts = hostname.split('.').slice(-2);
return parts.join('.');
} catch (e) {
return ''; // URLが不正な場合、空文字を返す
}
}
- 指定されたURLからホスト名を抽出し、ドメインの最後の2部分(例:
example.com
)を返します。無効なURLの場合は空文字を返します。
getSheetById
関数
function getSheetById(spreadsheetId, sheetId) {
var sheets = SpreadsheetApp.openById(spreadsheetId).getSheets();
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetId() == sheetId) {
return sheets[i];
}
}
return null;
}
- 指定されたスプレッドシートIDから全てのシートを取得し、指定されたシートIDに一致するシートを返します。一致するシートがない場合は
null
を返します。
このスクリプトは、URLのルートドメインを簡単に抽出し、スプレッドシートに出力するために使用されます。
Discussion