Изменение выпадающего списка набора ячеек после изменения другого выпадающего списка

#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). Все, что вам нужно сделать, это сохранить этот фрагмент кода в редакторе скриптов, и тогда он будет автоматически запущен при редактировании.

Вывод фрагмента кода:

введите описание изображения здесь