Скрипт Google: onedit(e) e.value не регистрирует нажатие клавиши удаления как редактирования
Четыре месяца назад пользователь Купер любезно предоставил мне приведенный ниже код. Хотя он отлично работает, у меня есть два вопроса.
1.) Чтобы сработала функция onEdit, мне нужно дважды нажать delete на клавиатуре. Одно нажатие только очищает значение ячейки. Есть ли способ обойти это?
2.) Редактируется только активная ячейка, но не выделенный мной диапазон. Есть ли способ заставить onEdits редактировать полные диапазоны?
Большое спасибо за вашу помощь.
function onEdit(e) {
var sh=e.range.getSheet();
//e.source.toast(' e.value: ' + e.value);
if(sh.getName()!='Sheet4'){return;}
if(e.range.rowStart<31 && e.range.columnStart<9 && !e.value) { //if in the range of A1:H30 and new value is blank
var rg=sh.getRange(e.range.rowStart,e.range.columnStart);
rg.setFormula("=Sheet2!" + rg.getA1Notation());
//e.source.toast('A1: ' + rg.getA1Notation() + ' e.value: ' + e.value);
}
}
1 ответ
Как любезно ответил Tedinoz в комментариях:
"Есть ли способ заставить onEdits редактировать полные диапазоны?"
Вы используете rowStart и columnStart.
Есть два варианта: 1. Просто используйте e.range 2. Также есть rowEnd и columnEnd; просто добавьте их в свой оператор "ЕСЛИ".
Вы можете просмотреть объекты событий с помощью Logger.log(JSON.stringify(e))
"Мне нужно дважды нажать удалить на клавиатуре"
Это не мой опыт. Если я выберу одну ячейку; нажмите клавишу Delete; подождите, пока Sheets зарегистрирует, что сохраняет лист; затем проверьте журнал, я обнаружил, что редактирование было записано.