我正在设置一个脚本,该脚本将通知人们计划在哪几天工作。我有一个日历,设置了每天的命名范围(block1,block2等)。我需要脚本在名称列表中查找,并针对每个名称查询它出现在哪个块中。
例如: Bill的名字出现在1,3,5块中。因此,对他来说,它将返回“ Block 1,Block 2,Block 3”
我能够从a1表示法和相反的名称中提取名称,并查询字符串出现在哪个单元格中,我的问题是弥合该单元格与其出现的范围之间的差距。
答案 0 :(得分:0)
这是我库中的一组函数,用于检查单元格是否在给定范围内,甚至访问该组命名范围。
function IsInRange(checkRange, targetCell) {
//--- check the target cell's row and column against the given
// checkrange area and return True if the target cell is
// inside that range
var targetRow = targetCell.getRow();
if (targetRow < checkRange.getRow() || targetRow > checkRange.getLastRow()) return false;
var targetColumn = targetCell.getColumn();
if (targetColumn < checkRange.getColumn() || targetColumn > checkRange.getLastColumn()) return false;
//--- the target cell is in the range!
return true;
}
function IsInNamedRange(checkCell) {
var namedRanges = SpreadsheetApp.getActive().getNamedRanges();
for (var index = 0; index < namedRanges.length; ++index) {
if (IsInRange(namedRanges[index].getRange(), checkCell)) {
var rangeName = namedRanges[index].getName();
return rangeName;
}
}
return "";
}
function main() {
var selectedCell = SpreadsheetApp.getActive().getActiveCell();
var result = IsInNamedRange(selectedCell);
if (result == "") {
Logger.log('the selected cell ' + selectedCell.getA1Notation() + ' is not in a named range');
} else {
Logger.log('the selected cell ' + selectedCell.getA1Notation() + ' is in the range named ' + result);
}
}