[GAS] スプレッドシートで削除するシートが参照されているか確認する方法

スポンサーリンク
Google Spread Sheets

スプレッドシートを削除したいときに、他のシートから参照されていると、削除後に影響が出てしまいます。今回は、そのようなことを未然に防ぐために、削除前に他のシートから参照されているか確認する方法を記載します。

準備

シートが参照されているかを確認するには、標準機能で不可になります。そこでGAS(Google Apps Script)のプログラムを実行して確認します。

まずは、拡張機能 > Apps Script を開きます。

続いて、次のコードをコピーして、貼り付けます。
2行目の”削除したいシート”は、実際に削除したいシート名に変更してください。

function findReferencesToSheet() {
  var sheetName = "削除したいシート";
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var references = [];

  // すべてのシートをチェック
  var sheets = ss.getSheets();
  for (var i = 0; i < sheets.length; i++) {
    var sheet = sheets[i];
    var rangeList = sheet.getDataRange().getFormulas();
    
    // シートの各セルをチェック
    for (var j = 0; j < rangeList.length; j++) {
      for (var k = 0; k < rangeList[j].length; k++) {
        var formula = rangeList[j][k];
        if (formula.indexOf(sheetName) !== -1) {
          references.push({
            sheet: sheet.getName(),
            cell: sheet.getRange(j + 1, k + 1).getA1Notation(),
            formula: formula
          });
        }
      }
    }
  }

  // 参照が見つかった場合、ログに出力
  if (references.length > 0) {
    Logger.log("以下のセルから " + sheetName + " を参照しています:");
    for (var l = 0; l < references.length; l++) {
      Logger.log("Sheet: " + references[l].sheet + ", Cell: " + references[l].cell + ", Formula: " + references[l].formula);
    }
  } else {
    Logger.log(sheetName + " は他のシートから参照されていません。");
  }
}

▼貼り付け後のイメージ

GASの実行と参照されているかを確認

選択されている関数名が findReferencesToSheet であることを確認し、実行ボタンを押下します。

※もし、アクセス権の承認を求められたら承認してください。

実行が終わると、下に実行ログが出力されます。
ログを見ると、参照されているシートとセルが確認できます。

今回作成したサンプルですと、2か所から参照されていることがわかります。

  • シート名「利用しているシート①」の A1セルから、削除したいシート A1へのセル参照
  • シート名「利用しているシート②」の B1セルから、削除したいシートにXLOOKUPで参照

この2か所を対処してあげれば、削除したいシートを安心して削除できます。

以上、『スプレッドシートで削除するシートが参照されているか確認する方法』でした。

コメント

タイトルとURLをコピーしました