Как несмежные диапазоны обрабатываются простым триггером onEdit () в Google Scripts for Sheets? - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь получить простой триггер onEdit () для выполнения действия над всеми отредактированными ячейками в Google Sheets.Проблема в том, что если вы редактируете коллекцию несмежных ячеек, объект события выбирает только первый выбранный диапазон.

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

function onEdit(e) {
  var range = e.range;
  range.setBackgroundRGB(255, 0, 0); //set color to red 
}

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

Спасибо

1 Ответ

0 голосов
/ 09 июня 2018

Мы могли бы получить активный лист из свойства range объекта события, но не из выделения, но мы могли бы использовать getSelection и getRangeList.Первый возвращает объект, который можно использовать для получения ссылок на выбранные диапазоны, что делается через getRangeList.

Пример из https://developers.google.com/apps-script/reference/spreadsheet/selection

var activeSheet = SpreadsheetApp.getActiveSheet();
var rangeList = activeSheet.getRangeList(['A1:B4', 'D1:E4']);
rangeList.activate();

var selection = activeSheet.getSelection();
// Current Cell: D1
Logger.log('Current Cell: ' + selection.getCurrentCell().getA1Notation());
// Active Range: D1:E4
Logger.log('Active Range: ' + selection.getActiveRange().getA1Notation());
// Active Ranges: A1:B4, D1:E4
var ranges =  selection.getActiveRangeList().getRanges();
for (var i = 0; i < ranges.length; i++) {
  Logger.log('Active Ranges: ' + ranges[i].getA1Notation());
}
Logger.log('Active Sheet: ' + selection.getActiveSheet().getName());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...