У меня есть файл с несколькими листами. В «J4: BA1000» некоторых из этих листов есть раскрывающиеся варианты, в которых пользователь может выбирать буквы от А до I. Чего я пытаюсь добиться, так это то, что при выборе выбранная опция заменяется соответствующим кодом: 1 9. С этим я опробовал приведенный ниже код, который я тоже видел по переполнению стека. Тем не менее, это не работает, и я не уверен, почему. Я полагаю, что логика c правильная, точные имена листов и условия.
Я обращаюсь к сообществу за советом.
Аналогично, я считаю, что есть улучшение того, как я делаю проверку имен листов, чтобы избежать многократного || (или), а также изменение значений, чтобы избежать множественных ifs.
Надеемся на ваш совет по этому вопросу. Спасибо!
function onEdit(e) {
var SS = SpreadsheetApp.getActiveSpreadsheet();
var ss = SS.getActiveSheet();
var sheetName = ss.getName();
var range = e.getRange;
var targetrange = ss.getRange("J4:BA1000");
var cell = range.getValue();
if ( sheetName == "Kalos" || sheetName == "Logos" || sheetName == "Atos" || sheetName == "Manos" || sheetName == "Sodos" || sheetName == "Antos" || sheetName == "Minos" || sheetName == "Ambos" ) {
if (Checkkk(targetrange,range)){
if(cell == 'A'){range.setValue("1");}
if(cell == 'B'){range.setValue("2");}
if(cell == 'C'){range.setValue("3");}
if(cell == 'D'){range.setValue("4");}
if(cell == 'E'){range.setValue("5");}
if(cell == 'F'){range.setValue("6");}
if(cell == 'G'){range.setValue("7");}
if(cell == 'H'){range.setValue("8");}
if(cell == 'I'){range.setValue("9");}
}
}
}
function Checkkk(R1, R2) {
var LR1 = R1.getLastRow();
var Ro2 = R2.getRow();
if (LR1 < Ro2) return false;
var LR2 = R2.getLastRow();
var Ro1 = R1.getRow();
if (LR2 < Ro1) return false;
var LC1 = R1.getLastColumn();
var C2 = R2.getColumn();
if (LC1 < C2) return false;
var LC2 = R2.getLastColumn();
var C1 = R1.getColumn();
if (LC2 < C1) return false;
return true;
}
Итак, просто для объяснения логики c, когда я выполняю редактирование, он проверяет, находится ли отредактированная ячейка в нескольких листах в первом IF. Если TRUE
, то с помощью функции Checkkk
проверяется, находится ли отредактированная ячейка в пределах J4: BA1000. Если TRUE
, то он проверяет, находится ли выбранное значение в пределах от A до I. Если TRUE
, то он заменяет эту букву соответствующим кодом, который составляет от 1 до 9. Опять же, я думаю, что код логически корректен; Я просто не уверен, в чем здесь ошибка.
Спасибо!