Вы можете использовать простой триггер onEdit (e) для автоматического выполнения задания:
Триггер onEdit (e) запускается автоматически, когда пользователь изменяет значение любого ячейка в электронной таблице [...]
Это не совсем то же самое, что было раньше, потому что выбранные значения будут по-прежнему отображаться в списке. Они просто будут удалены, если они будут повторяться.
Единственное изменение, которое вы должны сделать, это удалить текущую проверку данных из столбца D и установить новую со значениями из столбца A .
function onEdit(event){
if (event.range.getColumn() == 4){ //Run only if the edited cell is from column D
var sheet = SpreadsheetApp.getActiveSheet();
var selection = sheet.getRange("D2:D22").getValues();
var editedRow = event.range.getRow(); //Gets the edited row
for (var i = 0; i < selection.length; i++){
//If some value from D is equal to the edited value but in a different Row (so it ignores the inputted value)
if ((i + 2) != editedRow && selection[i][0] == event.value){
sheet.getRange(event.range.getA1Notation()).setValue(""); //Change the new value to empty
}
}
}
}
Функция будет запускаться каждый раз, когда вы выбираете элемент в столбце D.
Результат:
Ссылки: