#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
У меня есть несколько строк с задачами, а столбцы — дни. У всех ячеек есть выпадающий список, параметры берутся с другого листа, только ‘Y’ или ‘N’. Если задача выполнена, я выбрал Y в выпадающем списке.
Я хочу установить все выпадающие списки в той же строке, что и ‘Y’, если одна из тех же строк — ‘Y’. Итак, если у меня есть строка, полная ‘N’, и я меняю один на ‘Y’, остальные должны измениться на ‘Y’. То же самое с ‘N’, если одна ячейка установлена как ‘N’, все остальные ячейки той же строки должны измениться на ‘N’.
Пробовал кое-что, но всегда получал какую-то ошибку цикла.
Ответ №1:
Фрагмент кода:
Настройте параметры (с комментариями в приведенном ниже коде) в соответствии с вашим конкретным сценарием. Проверьте также прикрепленный gif, чтобы понять, как я выбрал конкретные параметры на основе моего примера листа.
function onEdit(e) {
const startRow = 2; // assuming header in row 1
const startCol = 4; // dropdown starts in column D
const endCol = 7; // dropdown ends in column G
const sheetName = "Sheet1"; // select the name of your sheet
const ss = e.source;
const as = ss.getActiveSheet();
const ar = e.range;
const row = ar.getRow();
const col = ar.getColumn();
if (as.getName()==sheetName amp;amp; row>=startRow amp;amp; col>=startCol amp;amp; col<=endCol){
if(["Y","N"].includes(ar.getValue())){
as.getRange(row,startCol,1,endCol-startCol 1)
.setValues([(new Array(endCol-startCol 1))
.fill(ar.getValue())])
}
}
}
Примечание:
onEdit — это триггерная функция. Вы не должны выполнять его вручную, и если вы это сделаете, вы фактически получите ошибки (из-за использования объекта event). Все, что вам нужно сделать, это сохранить этот фрагмент кода в редакторе скриптов, и тогда он будет автоматически запущен при редактировании.