В основном ваш код не выполняет то, что вы ожидаете, потому что диапазоны, которые вы получаете в строках, как этот:
sheet.getRange(oldRow, oldColumn).setBackground("orange");
- это всего лишь одна ячейка.
При использовании getRange
следует включить параметры numRows
и numColumns
, если вы хотите, чтобы диапазон включал более одной строки или столбца соответственно (см. Дополнительную информацию здесь ).
Ваша функция recordChange
может выглядеть следующим образом:
function recordChange(c) {
var range = c.range;
var ss = c.source; // This returns the spreadsheet from which the event was triggered
var sheet = ss.getSheets()[0];
var column = 8; //Column for change log
var firstRow = range.getRow();
var numRows = range.getNumRows();
range.setBackground("orange");
var dateCells = sheet.getRange(firstRow, column, numRows);
dateCells.setValue(new Date())
}
Обратите внимание, что вам не нужно получать новый диапазон для изменения цвета фона отредактированных ячеек (выиспользуйте этот точный диапазон как свойство объекта события , как вы можете видеть в приведенном выше коде).
При установке даты выпуска в столбце 8 вам необходимо использовать getRange
. Как видите, вам нужно указать количество строк, которое будет иметь диапазон (что соответствует количеству строк отредактированного диапазона), и вы получите это количество строк, используя getNumRows .
Что касается функции recordAction
, если я правильно вас понимаю, вы хотите, чтобы она убрала цвет фона в первых столбцах, если редактируются соответствующие строки. В этом случае ваша функция может выглядеть следующим образом:
function recordAction(c) {
var range = c.range;
var ss = c.source;
var sheet = ss.getSheets()[0];
var row = range.getRow();
var firstRow = range.getRow();
var firstColumn = 1;
var numRows = range.getNumRows();
var numCols = 8;
var editedRange = sheet.getRange(firstRow, firstColumn, numRows, numCols);
editedRange.setBackground(null);
}
Здесь вам также необходимо использовать getRange
, поскольку диапазон, который вы хотите изменить, не совпадает с диапазоном, полученным из объекта события. ,Для этого вам необходимо предоставить соответствующие параметры. Опять же, вы можете получить количество строк, используя getNumRows
. И если вы хотите удалить фон для первых 8 столбцов, вы уже знаете оба параметра столбца (1 и 8).
Надеюсь, это вам поможет.