Абсолютно новичок-самоучка здесь, так что потерпите меня, пожалуйста.
Я работаю над сценарием, который изменит значение определенной ячейки, если он найдет совпадение на других листах (на самом деледва матча - значит, должны быть выполнены два условия).
Есть 4 листа - «Менеджер» и 3 листа для «Операторов».Идея состоит в том, что, когда оператор меняет статус своей части заказа на «Готово», менеджер видит это на своем листе.Сценарий ищет подходящие номера заказов, затем проверяет статус и, наконец, изменяет ячейку на листе менеджера.Законченный процесс отмечен восклицательным знаком.
Вот что я получил до сих пор:
function orderprogress() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mngr = ss.getSheetByName("MANAGER");
var oprt1 = ss.getSheetByName("OPERATOR1");
var oprt2 = ss.getSheetByName("OPERATOR2");
var oprt3 = ss.getSheetByName("OPERATOR3")
var datam = sklep.getDataRange().getValues();
var datao1 = magazyn.getDataRange().getValues();
var datao2 = pila.getDataRange().getValues();
var datao3 = laser.getDataRange().getValues();
for (var i = 0; i < datam.length; i++) //manager
for (var i3 = 0; i3 < datao1.length; i3++) //operator 1
for (var i4 = 0; i4 < datao2.length; i4++) //operator 2
for (var i5 = 0; i5 < datao3.length; i5++) //operator 3
{
var datam2 = datam[i];
for (var i2 = 0; i2 < datam2.length; i2++) { //manager - columns
if (datao1[i3][3] == datam[i][0] && datao1[i3][0] == "DONE" && datam2[i2] == "O1") { //check for matching order number in column D, then check status in column A and look for operator 1's "process"
sklep.getRange(i + 1, i2 + 1).setValue("O1!");
} else if (datao1[i3][3] == datam[i][0] && datao1[i3][0] !== "DONE" && datam2[i2] == "O1!") { //checking back op1
sklep.getRange(i + 1, i2 + 1).setValue("O1"); //(in case someone marked the process as finished and then marked it back as unfisnihed)
} else if (datao2[i4][4] == datam[i][0] && datao2[i4][0] == "DONE" && datam2[i2] == "O2") { //is op 2 done?
sklep.getRange(i + 1, i2 + 1).setValue("O2!");
} else if (datao2[i4][4] == datam[i][0] && datao2[i4][0] !== "DONE" && datam2[i2] == "O2!") { //checking back op2
sklep.getRange(i + 1, i2 + 1).setValue("O2");
} else if (datao3[i5][6] == datam[i][0] && datao3[i5][0] == "DONE" && datam2[i2] == "O3") { //is op 3 done?
sklep.getRange(i + 1, i2 + 1).setValue("O3!");
} else if (datao3[i5][6] == datam[i][0] && datao3[i5][0] !== "DONE" && datam2[i2] == "O3!") { //checking back op3
sklep.getRange(i + 1, i2 + 1).setValue("O3");
}
}
}
}
Я знаю, что это слишком сложно и безобразно, чтопочему для запуска требуется много времени.Любой намек на то, как это упростить?Процедура ("O1", "O2", "O3") может быть найдена только в определенных столбцах (например, DK), поэтому, возможно, ограничение поиска теми из них может ускорить его выполнение?
Оцените всю помощь.