Đoạn mã sau sẽ thêm một menu vào Bảng tính:
Thám tử> Người phụ thuộc dấu vết
Chọn mục này sẽ thêm ghi chú vào ô hiện hoạt với tất cả các tham chiếu ô phụ thuộc.
(thêm tìm kiếm cho các tham chiếu tĩnh theo đề xuất của Graham bên dưới)
Bạn có thể thêm một hàm tương tự vào hàm trackDependents để tìm kiếm văn bản trong ô hiện hoạt cho hàm Tìm kiếm trong Công thức. Tôi sẽ để nó như một bài tập cho bạn.
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = []
menuEntries.push({name: "Trace Dependents", functionName: "traceDependents"});
ss.addMenu("Detective", menuEntries);
}
function traceDependents(){
var dependents = []
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentCell = ss.getActiveCell();
var currentCellRef = currentCell.getA1Notation();
var range = ss.getDataRange();
var regex = new RegExp("\\b" + currentCellRef + "\\b");
var formulas = range.getFormulas();
for (var i = 0; i < formulas.length; i++){
var row = formulas[i];
for (var j = 0; j < row.length; j++){
var cellFormula = row[j].replace(/\$/g, "");
if (regex.test(cellFormula)){
dependents.push([i,j]);
}
}
}
var dependentRefs = [];
for (var k = 0; k < dependents.length; k ++){
var rowNum = dependents[k][0] + 1;
var colNum = dependents[k][1] + 1;
var cell = range.getCell(rowNum, colNum);
var cellRef = cell.getA1Notation();
dependentRefs.push(cellRef);
}
var output = "Dependents: ";
if(dependentRefs.length > 0){
output += dependentRefs.join(", ");
} else {
output += " None";
}
currentCell.setNote(output);
}