Первое: если вы хотите, чтобы один и тот же сценарий выполнялся для Мириам и Виктора, вам не нужно делать копии сценария.
Точнее, вам не следует делать это, потому что это приведет к с тремя onEdit
функциями в одном проекте, что запрещено.
Кроме того, копирование сценария и сохранение его под именами других сотрудников не заставит его работать на них.
Вместо этого вам необходимо изменить сценарий.
строка
if(s.getName() == "Elisa" && r.getColumn() == 2 && r.getValue() == true) {
указывает, что строка должна быть заархивирована, только если имя листа - "Elisa". Чтобы заставить его работать для других сотрудников, измените его на:
if((s.getName() == "Elisa"||s.getName() == "Victor"||s.getName() == "Miriam" )&& r.getColumn() == 2 && r.getValue() == true) {
Секунда:
Строка var targetSheet = ss.getSheetByName("Elisa");
указывает, что лист, к которому должна быть строка отошла назад "Элиза".
Если вы хотите, чтобы он переместился на лист человека, который создал эту строку - эта строка должна содержать некоторую информацию о ее создателе. Есть ли у него? Если нет, вы должны внедрить дополнительный столбец во всех листах, в которых указан создатель.
Если имя создателя хранится в столбце S, вы можете изменить оператор else
своего кода следующим образом:
else if(s.getName() == "Archive" && r.getColumn() == 2 && r.getValue() == false) {
var row = r.getRow();
var nameColumn = 19;
var name = s.getRange(row, nameColumn).getValue();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName(name);
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
По сути, вы извлекаете имя создателя строки с помощью
var name = s.getRange(row, nameColumn).getValue();
и затем передаете содержимое переменной в
var targetSheet = ss.getSheetByName(name);
.
Таким образом, целевой лист будет устанавливаться динамически, в зависимости от строки.