Google Apps Scriptを使ってディレクトリマップを自動作成する方法

今回は、Google SheetsでURLリストをディレクトリマップ形式で整理するGoogle Apps Scriptの作成方法についてご紹介します。

このスクリプトを使用することで、URLの階層構造を視覚的にわかりやすく整理し、各階層ごとにフルURLとタイトルを適切な列に出力することができます。

まず、Google Sheetsを開き、スクリプトエディタを開きます。これには次の手順に従います:

  1. Google Sheetsを開く: 必要なデータ(URLとタイトル)が入力されたシートを開きます。
  2. スクリプトエディタを開く: メニューから「拡張機能」 > 「スクリプトエディタ」を選択します。

スクリプトの作成

スクリプトエディタで以下のコードを入力します。このスクリプトは、A列にURL、B列にタイトルが記載されているシートからデータを読み取り、ディレクトリマップを作成し、新しいシートに出力します。

パターン①タイトル抽出あり

function createDirectoryMap() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); // データがあるシートの名前を指定
var data = sheet.getRange('A:B').getValues();

var directoryMap = [];
var maxDepth = 0;

for (var i = 1; i < data.length; i++) { // 最初の行はヘッダーなのでスキップ
var url = data[i][0];
var title = data[i][1];
var segments = url.replace('https://', '').split('/').filter(Boolean);

// 最大階層数を更新
if (segments.length > maxDepth) {
maxDepth = segments.length;
}

// フルURLを構築
var fullUrl = 'https://' + segments.join('/');

// 行を作成
var row = new Array(maxDepth * 2).fill('');
row[(segments.length - 1) * 2] = fullUrl; // 階層にフルURLを配置
row[(segments.length - 1) * 2 + 1] = title; // タイトルを次の列に配置

directoryMap.push(row);
}

var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DirectoryMap') || SpreadsheetApp.getActiveSpreadsheet().insertSheet('DirectoryMap');
outputSheet.clear();

// ヘッダーを追加
var headers = [];
for (var h = 0; h < maxDepth; h++) {
headers.push('階層' + (h + 1));
headers.push('Title' + (h + 1));
}
outputSheet.getRange(1, 1, 1, headers.length).setValues([headers]);

// ディレクトリマップの各行を出力
for (var i = 0; i < directoryMap.length; i++) {
var row = directoryMap[i];
outputSheet.getRange(i + 2, 1, 1, row.length).setValues([row]);
}
}

パターン②タイトル抽出なし

function createDirectoryMap() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var urls = sheet.getRange("Q1:Q" + sheet.getLastRow()).getValues();
  
  for (var i = 0; i < urls.length; i++) {
    var url = urls[i][0];
    if (url) {
      var parts = getFullUrls(url);
      var column = parts.length;
      sheet.getRange(i + 1, column).setValue(url);
    }
  }
}

function getFullUrls(url) {
  var origin = url.match(/^(https?:\/\/[^\/]+)\/?/)[1];
  var pathParts = url.replace(origin, '').split('/').filter(Boolean);
  var fullUrls = [origin]; // Start with the origin
  
  var currentUrl = origin;
  for (var i = 0; i < pathParts.length; i++) {
    currentUrl += '/' + pathParts[i];
    fullUrls.push(currentUrl);
  }
  
  return fullUrls;
}

スクリプトの実行

スクリプトエディタでスクリプトを保存し、実行します。これにより、A列のURLとB列のタイトルを元にしたディレクトリマップが、新しいシート「DirectoryMap」に出力されます。

まとめ

Google Apps Scriptを使用することで、URLリストを効率的に整理し、視覚的に理解しやすいディレクトリマップを作成することができます。このスクリプトをカスタマイズして、さらに多くの機能を追加することも可能です。ぜひ試してみてください!

以上が、Google Apps Scriptを使ったディレクトリマップ作成の方法です。この記事が皆さんの業務効率化に役立てば幸いです。

コメント