#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-й ячейки той же строки.
Затем вы можете проверить значение и выполнить любые действия.