Как исправить: петли не будут работать до завершения - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь найти набор слов в столбце и добавить либо да, либо нет в конце строки.Сценарий выполняется для первых нескольких записей, но он останавливается на полпути.

Я использую textFinder для поиска и извлечения строки результатов, чтобы я мог редактировать да и нет.

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({ name: "test", functionName: "test" });
  ss.addMenu("Commands", menuEntries);
}

function test() {
  var backupCol = 2
  var dataStartRow = 1
  var row;
  var searchString;
  var textfinder;
  var searchResults;
  var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("input");
  var dataLastRow = dataSheet.getLastRow();
  dataSheet.getRange(dataStartRow, backupCol, dataLastRow).setValue("NO");
  for (var i = 0; i < yesArr.length; i++) {
    searchString = yesArr[i];
    textfinder = dataSheet.createTextFinder(searchString);
    searchResults = textfinder.findAll(); 
    for (var i = 0; i < searchResults.length; i++) {
      row = searchResults[i].getRow();
      dataSheet.getRange(row, backupCol).setValue("YES");
    }
  }
}

Я ожидаю, что выходные данные всех тех записей, которые включают значения yesArr, будут иметь значение yes в столбце B строки.но фактический результат работает только до половины

1 Ответ

0 голосов
/ 11 июня 2019

Ваша проблема заключается во вложенном for-loops.

Использование i в качестве индекса в обоих циклах создает проблемы для компилятора.

Изменение второго for-loops индекса на x решит проблему.

 for (var i = 0; i < yesArr.length; i++) {
    searchString = yesArr[i];
    textfinder = dataSheet.createTextFinder(searchString);
    searchResults = textfinder.findAll(); 
    for (var x = 0; x < searchResults.length; x++) {
      row = searchResults[x].getRow();
      dataSheet.getRange(row, backupCol).setValue("YES");
    }
  }
...