Возврат именованных диапазонов на основе запроса контента - PullRequest
0 голосов
/ 24 января 2019

Я устанавливаю сценарий, который будет уведомлять людей о том, на какие дни они должны работать. У меня есть календарь с именованными диапазонами для каждого дня (block1, block2 и т. Д.). Мне нужен скрипт, чтобы пройти вниз по списку имен и для каждого имени запросить, в каком блоке (ах) он появляется.

Например: Имя Билла появляется в блоках 1, 3 и 5, поэтому ему будет возвращено «Блок 1, Блок 2 и Блок 3»

Я могу извлечь имена из нотации a1 и наоборот и запросить, в какой ячейке появляется строка, моя проблема заключается в преодолении разрыва между ячейкой и диапазоном, в котором она появляется.

1 Ответ

0 голосов
/ 25 января 2019

Вот набор функций в моей библиотеке, которые я использую для проверки, находится ли ячейка внутри заданного диапазона, и даже для доступа к набору именованных диапазонов.

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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...