Как я могу создать «если» и «еще если» в течение нескольких раз в onedit_function?

#javascript #google-apps-script #google-sheets

Вопрос:

Пожалуйста, помогите решить эту проблему. В скриптах таблиц Google. Нужно сделать несколько «если» при редактировании диапазона. Этот код работает хорошо, но речь идет только о диапазоне редактирования. Но мне нужно добавить условие, когда другой диапазон в той же строке имеет определенное значение.

У меня есть: 5 списков (List1, list2, name1, name2, name3) Мне нужно: (всегда: копировать значения из списка 1 в список 2 с помощью «onedit», не всегда: и только если другой диапазон в этой строке имеет имя 1 или 2 или 3, копирование происходит на эти листы соответственно.

если отредактированный диапазон является ИСТИННЫМ
, скопируйте в list2
и if range.offset(0,10).getvalue == "Name1"
скопируйте в список «Name1»,
и if range.offset(0,10).getvalue == "Name2"
скопируйте в список «Имя 2»
и if range.offset(0,10).getvalue == "Name3"
скопируйте в список «Имя 3»

Конечно, это работает только на первом этапе…

 function onEdit(e) {
    const range = e.range; //edited range
    const value = e.value; //value
    const ss = e.source; //tabl
    const sheet_from = ss.getActiveSheet(); //activelist

    if (sheet_from.getName() == 'List1' amp;amp; range.getColumn() == 1 amp;amp; value == 'TRUE') { //условие запуска переноса строки

        const sheet_to = ss.getSheetByName('List2'); 
        const row = range.getRow(); //active row
        const row_values = sheet_from.getRange(row, 2, 1, 1).getValues(); 
        const sheet_to_lr = sheet_to.getLastRow(); 

        sheet_to
          .getRange(sheet_to_lr 1, 2, 1, 1)
          .setValues(row_values); 
    }
}
 

Комментарии:

1. Итак, вы все-таки нашли решение?

Ответ №1:

Вероятно, вы хотите чего-то подобного:

 function onEdit(e) {
  const range = e.range; //edited range
  const value = e.value; //value
  const ss = e.source; //tabl
  const sheet_from = ss.getActiveSheet(); //activelist

  if (sheet_from.getName() != 'List1') return;
  if (range.getColumn() != 1) return;
  if (value != 'TRUE') return;

  let sheet_to = ss.getSheetByName('List2');
  const row = range.getRow(); //active row
  const row_values = sheet_from.getRange(row, 2, 1, 1).getValues();
  let sheet_to_lr = sheet_to.getLastRow();

  sheet_to.getRange(sheet_to_lr   1, 2, 1, 1).setValues(row_values);

  const next_cell = range.getCell(1, 1).offset(0, 2).getValue();

  if (next_cell == 'Name1') {
    sheet_to = ss.getSheetByName('Name1');
    sheet_to_lr = sheet_to.getLastRow();
    sheet_to.getRange(sheet_to_lr   1, 2, 1, 1).setValues(row_values);
  }

  if (next_cell == 'Name2') {
    sheet_to = ss.getSheetByName('Name2');
    sheet_to_lr = sheet_to.getLastRow();
    sheet_to.getRange(sheet_to_lr   1, 2, 1, 1).setValues(row_values);
  }

}
 

range.getCell(1, 1).offset(0, 2).getValue() таким образом, вы можете получить значение 10-й ячейки той же строки.

Затем вы можете проверить значение и выполнить любые действия.