Я пытаюсь найти определенные значения в таблице данных, используя цикл for, и в зависимости от того, является ли значение = «Да», он переместит строку на другой лист.Цикл должен дополнительно искать значение requesttype (в данном случае SRM, CC или TM1) и перемещать только определенные части строки на другой лист.
Следовательно, цикл for должен копировать строку на основе входных данных из двух разных столбцов таблицы данных: «Все выходы»
Поэтому, хотя мой код работает в целом, когда я его запускаю, онтолько кажется, что выполняет функцию для половины строк, где вводится «Да».
Каждый раз, когда я запускаю скрипт, половина строк, которые нужно переместить, перемещается, но другая половина остается на исходном листе.Я могу запустить код, пока не останется только одна строка, и в этом случае больше ничего не происходит.
Вот что у меня есть:
function myonEdit2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var sheetNameToWatch = "Open Requests";
var columnNumberToWatch = 38;
var watchColumn = 2;
var valueToWatch = "Yes";
var datarange = sheet.getRange(9, 2, 900, 36).getValues();
var sheetNameToMoveTheRowTo = "Closed Requests"
for (i = 0; i < datarange.length -1; i++) {
if (datarange[i][35] == "Yes") {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
if (datarange[i][0] == "SRM") {
var targetRange3 = targetSheet.getRange(targetSheet.getLastRow() + 1, 2);
sheet.getRange(i, 2, 1, 8).moveTo(targetRange3);
sheet.deleteRow(rowstart + i);
}
else if (datarange[i][0] == "GC") {
var targetRange3 = targetSheet.getRange(targetSheet.getLastRow() + 1, 2);
sheet.getRange(i, 2, 1, 8).moveTo(targetRange3);
sheet.deleteRow(i);
}
else if (datarange[i][0] == "TM1") {
var targetRange4 = targetSheet.getRange(targetSheet.getLastRow() + 1, 2, 1, 6);
sheet.getRange(i, 2, 1, 6).moveTo(targetRange4);
var targetRange5 = targetSheet.getRange(targetSheet.getLastRow(), 10, 1, 1)
sheet.getRange(i, 13, 1, 1).copyTo(targetRange5)
sheet.deleteRow(i);
}
}
}
Как я уже сказал, код работает нормально, но он не выполняется для всех строк, для которых он должен выполняться.
Как видно из приведенного выше, я определяю диапазон цикла for как полную таблицу данных, в которой находится таблица. Затем я создаю первый (основной) if условие, а именно 36-й столбец диапазона данных "Да".Это должно определить, для каких строк будет выполняться скрипт.
Второе условие if определяет, какие именно столбцы строки следует скопировать, и зависит от того, является ли первый столбец = SRM, CC или TM1.
Если бы кто-нибудь мог помочь мне понять, почему код не выполняется для всех строк, это было бы замечательно.
Пример листа