如何修复:循环不会 运行 完成

How to fix: loops wont run to completion

我正在尝试在列中搜索一组词,并在行末添加是或否。该脚本为前几个条目运行,但中途停止。

我正在使用 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 值的条目的输出在该行的列 B 中有一个是。但实际输出只能工作到一半

你的问题出在你的嵌套 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");
    }
  }