Как я могу получить oldValue ячейки, когда пользователь удаляет содержимое ячейки?e.oldValue в этом случае не определено - PullRequest
0 голосов
/ 26 ноября 2018

Как я могу получить oldValue ячейки, когда пользователь удаляет содержимое?

Цель этого - предотвратить случайное удаление / редактирование, когда начинающие пользователи используют общую электронную таблицу,Только пустые ячейки должны обновляться без предупреждения.

Работает при редактировании содержимого ячейки.Но при удалении содержимого ячейки oldValue не определено - в ячейке было содержимое.

PS.Я знаю, что это работает только для редактирования одной ячейки - я проверил диапазон width / height == 1, но это также не верно для удаления значения.(выберите ячейку, нажмите «Удалить»)

Мой тестовый код ниже:

function onEdit(e) {
  Logger.log("onEdit called") 
  Logger.log("e.oldValue: %s", e.oldValue) 
  Logger.log("e.value: %s", e.value)
  Logger.log(e) 
  if (!("value" in e) || (e.oldValue != undefined)) {
     if (shouldRevertChange(e.oldValue, e.range.getValue())) {
        e.range.setValue(e.oldValue);
     }
   }
}

function shouldRevertChange(oldValue, newValue) {
  var ui = SpreadsheetApp.getUi();

  var result = ui.alert(
     'Was this a mistake?',
    'You changed the contents of a cell. Old value: '+oldValue+', new value: '+newValue+'. Do you want to revert the change?',
      ui.ButtonSet.YES_NO);

  // Process the user's response.
  if (result == ui.Button.YES) {
    // User clicked "Yes".
    return true;
  } else {
    // User clicked "No" or X in the title bar.
    return false;
  }
}

Вот мой тестовый лист - редактируемый: https://docs.google.com/spreadsheets/d/1BP0Zqbf8QndhI62AucT3nGNm9eUlgzxf0lTCy2UHe-0/edit?usp=sharing

Также тестовый скрипт: https://script.google.com/d/1IuTpeEDlsqjDyp3ADRy2JYKzDymR7zOpPkamIcEUHnHXUNdA0SRf7xyU/edit?usp=sharing

Мне нужно увидеть в сообщении предупреждения старое значение из удаленной ячейки.

Сообщение для редактирования значения: User alert Журналы от редактирования значения: enter image description here

Сообщение для удаления / очистки значения: enter image description here

Журналы для удаления / очистки значения (старое значение ячейки нигде нет):enter image description here

1 Ответ

0 голосов
/ 09 декабря 2018

Есть плагин, который сделает это за вас.Это путь создания скрытой электронной таблицы, которая отражает реальную.

https://gist.github.com/tanaikech/73edaed1268a6d07118aed538aa5608d

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