{ try { const targetSS = SpreadsheetApp.openByUrl(url); const sheet = targetSS.getSheets()[0]; // 1枚目のシートを対象 // --- ① 2列目(B列)を削除 --- sheet.deleteColumn(2); // --- ② カテゴリ名を置換 --- const range = sheet.getDataRange(); const values = range.getValues(); for (let row = 0; row < values.length; row++) { for (let col = 0; col < values[row].length; col++) { if (values[row][col] === "旧カテゴリ名A") { values[row][col] = "新カテゴリ名B"; } } } range.setValues(values); Logger.log(`✅ ${index + 1}. ${url} → 処理完了`); } catch (e) { Logger.log(`❌ ${index + 1}. ${url} → エラー: ${e.message}`); } }); SpreadsheetApp.getUi().alert("全てのスプレッドシートの処理"> { try { const targetSS = SpreadsheetApp.openByUrl(url); const sheet = targetSS.getSheets()[0]; // 1枚目のシートを対象 // --- ① 2列目(B列)を削除 --- sheet.deleteColumn(2); // --- ② カテゴリ名を置換 --- const range = sheet.getDataRange(); const values = range.getValues(); for (let row = 0; row < values.length; row++) { for (let col = 0; col < values[row].length; col++) { if (values[row][col] === "旧カテゴリ名A") { values[row][col] = "新カテゴリ名B"; } } } range.setValues(values); Logger.log(`✅ ${index + 1}. ${url} → 処理完了`); } catch (e) { Logger.log(`❌ ${index + 1}. ${url} → エラー: ${e.message}`); } }); SpreadsheetApp.getUi().alert("全てのスプレッドシートの処理"> { try { const targetSS = SpreadsheetApp.openByUrl(url); const sheet = targetSS.getSheets()[0]; // 1枚目のシートを対象 // --- ① 2列目(B列)を削除 --- sheet.deleteColumn(2); // --- ② カテゴリ名を置換 --- const range = sheet.getDataRange(); const values = range.getValues(); for (let row = 0; row < values.length; row++) { for (let col = 0; col < values[row].length; col++) { if (values[row][col] === "旧カテゴリ名A") { values[row][col] = "新カテゴリ名B"; } } } range.setValues(values); Logger.log(`✅ ${index + 1}. ${url} → 処理完了`); } catch (e) { Logger.log(`❌ ${index + 1}. ${url} → エラー: ${e.message}`); } }); SpreadsheetApp.getUi().alert("全てのスプレッドシートの処理">

サンプルコードはこちら function batchProcessSheets() { const urlSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); const urls = urlSheet.getRange(2, 1, urlSheet.getLastRow() - 1).getValues().flat();

urls.forEach((url, index) => { try { const targetSS = SpreadsheetApp.openByUrl(url); const sheet = targetSS.getSheets()[0]; // 1枚目のシートを対象

  // --- ① 2列目(B列)を削除 ---
  sheet.deleteColumn(2);

  // --- ② カテゴリ名を置換 ---
  const range = sheet.getDataRange();
  const values = range.getValues();

  for (let row = 0; row < values.length; row++) {
    for (let col = 0; col < values[row].length; col++) {
      if (values[row][col] === "旧カテゴリ名A") {
        values[row][col] = "新カテゴリ名B";
      }
    }
  }

  range.setValues(values);

  Logger.log(`✅ ${index + 1}. ${url} → 処理完了`);
} catch (e) {
  Logger.log(`❌ ${index + 1}. ${url} → エラー: ${e.message}`);
}

});

SpreadsheetApp.getUi().alert("全てのスプレッドシートの処理が完了しました。"); }