我正在尝试在col中搜索一组单词,并在行末添加yes或no。该脚本会针对前几个条目运行,但会停顿一半。
我正在使用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值的条目的输出在该行的col B中都具有yes。但实际输出只能持续到一半
答案 0 :(得分:0)
您的问题出在嵌套的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");
}
}