Как вернуть ячейку, в которой написана функция? - PullRequest
0 голосов
/ 25 января 2019

Я изо всех сил пытаюсь найти решение для возврата текущей ячейки, в которой пишется функция.

Например, при определении диапазона я хочу, чтобы первый и второй параметры (целая строка и целочисленный столбец) были динамическими.

Если ячейка, в которой я в данный момент вызываю функцию, является ячейкой H1, то целочисленная строка должна быть 1, а целочисленный столбец - 8. Перемещение функции также приведет к перемещению строки и столбца.

sheet.getActiveCell() и sheet.getCurrentCell() просто возвращают ноль.

Google Apps Script Code

Google Sheets Example

На первом изображении выше: строки, помеченные как 1, являются параметрами, где параметры должны быть динамическими. Поле № 2 - это место, где я пытаюсь получить текущее значение в ячейках.

function dynamicRange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var completePercentRangeStart = sheet.getActiveCell().getValues();

  var range = sheet.getRange(1, 8, 3, 1);

  return completePercentRangeStart;
}

1 Ответ

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

Не имеет смысла использовать getValues() на sheet.getActiveCell(), потому что активная ячейка представляет собой одну ячейку и getValues() возвращает массив массивов (двумерный массив). Вместо этого используйте getValue().

С другой стороны, не имеет смысла возвращать значение активной ячейки, используя пользовательскую функцию, поскольку это своего рода циклическая ссылка.

Относительно

Как вернуть ячейку, в которой написана функция?

Предполагая, что это означает ссылку на ячейку с формулой, подобной =whoAmI()

function whoAmI() {
  var sheet = SpreadsheetApp.getActiveSheet();
  return sheet.getActiveCell().getA1Notation();
}

Если H1 имеет формулу, он будет отображать H1

...