У меня есть столбец на странице Google, где пользователь должен выбрать список элементов в раскрывающемся списке, но каждое значение в столбце должно быть уникальным.
Я нашел несколько способов сделать это, но ни один не настолько хорош.
Для начала я попытался использовать это решение - https://infoinspired.com/google-docs/spreadsheet/distinct-values-in-drop-down-list-in-google-sheets/ - которое использует функцию запроса, чтобы создать динамически изменяющийся столбец, на который указывает проверка данных. Это работает, но проблема в том, что как только вы вводите значение, оно становится недействительным и выдает ошибку, которая не выглядит профессионально.
Я также попробовал функцию onEdit, которая постоянно обновляет проверку ячейки со списком параметров:
function onEdit(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet 1");
var original = sheet.getRange(7,8,20,1).getValues(); /list of cells for data validation to be added
var option = new Array();
dvSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Drop Downs");
option = dvSheet.getRange('G1:G250').getValues();
option.push(["dummy"])
var i
var dv = SpreadsheetApp.newDataValidation();
for(i=0;i<20;i++){
option[250][0] = original[i][0];
dv.setAllowInvalid(false);
// dv.setHelpText("Some help text here");
dv.requireValueInList(option, true);
sheet.getRange(i+7,8).setDataValidation(dv.build());
}
}
'Drop Downs'! G1: G250 - это список, сгенерированный из решения 1. Код берет этот список и добавляет содержимое ячейки в этот список, а затем устанавливает список в качестве проверки данных.
Опять же, это работает, но есть задержка в обновлении списков проверки, что означает, что если пользователь достаточно быстр, он может добавить несколько одинаковых значений.
Другой вариант, о котором я подумал, - указать каждую ячейку на уникальный столбец, составленный из решения 1, с добавлением содержимого этой ячейки в конец. Но я не заинтересован в создании столбцов для каждой отдельной ячейки, поскольку их будет много (больше, чем 20, подразумеваемых в коде).
Что было бы здорово, так это то, что если бы Google позволил вам комбинировать диапазоны при проверке данных, то я мог бы объединить столбец из решения 1 с текущей ячейкой. Но, насколько я могу судить, это не так.
Может кто-нибудь думать о чем-то еще? У меня такое ощущение, что я либо слишком усложнил это, и есть простое решение - либо я слишком привередлив.