Google Script: onedit (e) e.value не регистрирует нажатие клавиши удаления как редактирование - PullRequest
0 голосов
/ 08 ноября 2019

Четыре месяца назад пользователь Cooper любезно предоставил мне приведенный ниже код. Хотя это прекрасно работает, у меня есть два вопроса по этому поводу.

1.) Для того, чтобы сработала функция onEdit, мне нужно дважды нажать клавишу удаления на клавиатуре. Одно нажатие очищает только значение ячейки. Есть ли какое-нибудь решение этой проблемы?

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 Ответ

0 голосов
/ 08 ноября 2019

Как @ Tedinoz любезно ответил в комментариях:

«Есть ли способ заставить onEdits редактировать полные диапазоны?»

Вы используете rowStart и columnStart.

Есть два варианта: 1. Просто используйте e.range 2. Также есть rowEnd и columnEnd;просто добавьте их в оператор «IF».

Вы можете просматривать объекты событий, используя Logger.log (JSON.stringify (e))

"Мне нужно нажать deleteна клавиатуре дважды "

Это не мой опыт. Если я выберу одну ячейку;нажмите клавишу удаления;подождите немного, пока Sheets регистрирует, что он сохраняет лист;затем проверьте журнал, я обнаружил, что редактирование было записано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...