如何修复:循环不会 运行 完成
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");
}
}
我正在尝试在列中搜索一组词,并在行末添加是或否。该脚本为前几个条目运行,但中途停止。
我正在使用 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");
}
}