スプレッドシートを削除したいときに、他のシートから参照されていると、削除後に影響が出てしまいます。今回は、そのようなことを未然に防ぐために、削除前に他のシートから参照されているか確認する方法を記載します。
準備
シートが参照されているかを確認するには、標準機能で不可になります。そこで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か所を対処してあげれば、削除したいシートを安心して削除できます。
以上、『スプレッドシートで削除するシートが参照されているか確認する方法』でした。
コメント