Как я могу получить 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
Мне нужно увидеть в сообщении предупреждения старое значение из удаленной ячейки.
Сообщение для редактирования значения: Журналы от редактирования значения:
Сообщение для удаления / очистки значения:
Журналы для удаления / очистки значения (старое значение ячейки нигде нет):