Я делал алгоритм очистки в Сценариях Служб Google, чтобы автоматизировать обрезку листа, вырезанного из файла PDF.
Я потратил несколько часов на то, чтобы возиться с этим кодом, который у меня есть, и просто совершенно сбит с толку относительно того, где я ошибся.
До этой грубой ситуации логика регистра была не совсем правильной, НО сценарий проходил через первый оператор if, второй цикл, второй оператор if, оператор case; успешно удалив ненужные строки. Тогда это не сбрасывало свойства i и j, поэтому все стало немного странно.
Теперь, когда я исправил логику кейса, он просто проходит через i и не распознает переход к второму циклу через первый оператор if, и я ЗАТЕРЯЛ.
Заранее извиняюсь, если мое форматирование / документация брутто; Я в значительной степени самоучка и с радостью приветствую любую критику!
function ytdClean() {
var app = SpreadsheetApp;
var sheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");
var sheetEnd = sheet.getLastRow();
for (var i = 1; i <= sheetEnd; i++) { //1. Loop i through column A 1:sheetEnd...
var x = sheet.getRange(i, 1);
Logger.log('x = ' + x.getValue());
if (x.getValue() == '') { //...until null entry x
for (var j = x.getRow + 1; j <= sheetEnd; j++) { //2. Loop j through column A from x + (1,0)...
var y = sheet.getRange(j, 1);
var z = sheet.getRange(j + 1, 1);
Logger.log('y = ' + y.getValue());
if (y.getValue() != '') { //...until non-null entry y;
var switchVal = z.getValue();
Logger.log('z = ' + switchVal + '...');
switch (switchVal) { //3. Switch
case "001": //case: z = y + (1,0) = 001...
var a = x.getRow();
var b = y.getRow() - 1;
sheet.deleteRows(a, b - a); //...delete rows of x through y...
i = a - 1;
Logger.log("...case 001");
break; //...break;
case "01": //case: z = 01...
var a = x.getRow();
var b = sheetend;
sheet.deleteRows(a, b - a); //...delete rows between and including x, y and all rows after y;
i = a - 1;
Logger.log("...case 01");
break; //...break;
default: //case: 001 < z < 1000...
var a = x.getRow();
var b = y.getRow();
sheet.deleteRows(a, b - a); //...delete rows of x through y...
i = a - 1;
Logger.log("...default");
break; //...break;
}
}
}
}
}
}
Кто-нибудь может увидеть, что я здесь делаю не так? Я пытался использовать [null] вместо [''] в операторах if, и это ничего не меняет. Тем не менее, наплевать на эти заявления if ...