После моего предыдущего поста дополнительная проблема удаления значений, предварительно заданных объектом события (e), здесь Как автоматически добавлять порядковый номер записи, основанной на метке, в строку, когда в нее добавляются несмежные новые данные это в Google Sheets?
Как получить результат из приведенного ниже кода, используя переменную или более простой метод в контексте текущей ситуации?
С помощью @TheMaster и некоторых других из @Tanaike здесь скрипт Google обнаруживает пустую ячейку после редактирования
Я нашел обходной путь для удаления значений, предварительно заданных объектом события (e).
Вот что я нашел:
function onEdit(e) {
var rg = e.range,
row = rg.rowStart,
col = rg.columnStart,
sht = rg.getSheet();
//exit code
if (col !== 2 || sht.getName() !== 'Sheet1' || row === 1) return;
// When the empty cell is edited, this becomes true.
if ((e.value != null) && (e.oldValue == null)){
//Calculate max value and add 1
rg.offset(0, -1, 1, 1).setValue(//setvalue in colA
rg
.offset(2 - row, -1, sht.getLastRow() - 1, 1) //get all of colA
.getValues()
.reduce(function(acc, curr) {//get max of colA
return Math.max(acc, Number(curr[0]));
}, 0) + 1
);
}
// When the value of cell with a value is removed, this becomes true.
else if ((e.value == null) && (e.oldValue == null)) {
rg.offset(0, -1, 1, 1).setValue(//setvalue in colA
rg
.offset(2 - row, -1, sht.getLastRow() - 1, 1) //get all of colA
.getValues()
.reduce(function(acc, curr) {//get max of colA
return Math.max(acc, Number(curr[0]));
}, 0)
).clearContent(); // If we delete cell
}
}
Вот живой результат:
https://i.imgur.com/jWd4Erz.gif
Какой более простой и понятный способ достижения результата вы бы порекомендовали?
Результат делает то, что ожидается. Но есть ли способ использовать переменную для достижения того же результата в контексте исходного кода @TheMaster ниже?
Оригинальный код от @TheMaster ссылка :
function onEdit(e) {
var rg = e.range,
row = rg.rowStart,
col = rg.columnStart,
sht = rg.getSheet();
//exit code
if (col !== 2 || sht.getName() !== 'Sheet1' || row === 1) return;
//Calculate max value and add 1
rg.offset(0, -1, 1, 1).setValue(//setvalue in colA
rg
.offset(2 - row, -1, sht.getLastRow() - 1, 1) //get all of colA
.getValues()
.reduce(function(acc, curr) {//get max of colA
return Math.max(acc, Number(curr[0]));
}, 0) + 1
);
}
Большое спасибо за вашу помощь и идеи!