Проблема в том, что у меня большая электронная таблица (более 4500 строк) с большим количеством данных в первом столбце - например. с типами фруктов, которые не уникальны, например:
APPLE
BANANA
APRICOTS
APPLE
BLACKCURRANT
APPLE
BANANA
APRICOTS
etc.
Что мне нужно - найти каждый BANANA, чтобы иметь возможность поместить в ячейку некоторую информацию, например. ДА. Я попытался зациклить решение из Определение положения ячейки в листах Google с использованием строки или целого числа, но наверняка мой код неверен. Я уже потратил много часов, чтобы что-то придумать, но до сих пор не понимаю, чего мне не хватает.
function test(){
var dispatch = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FRUITS");
var find = dispatch.getRange("A:A").getValues();
var name = "BANANA";
var lastRow = dispatch.getLastRow();
var n = 1;
var temp = dispatch.getRange(n, 2).getValue();
var i = 0;
while (temp != ""){
for(var n in find){
if (find[n][0] === name){break}
}
n++;
var n = n + i;
dispatch.getRange(n, 2).setValue("YES");
var temp = dispatch.getRange(n, 2).getValues();
var find = dispatch.getRange(n, 2, lastRow).getValues();
var i = n;
}
}
Буду очень благодарен за помощь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пример кода ниже:
function test(){
var dispatch = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FRUITS");
var range = dispatch.getRange(1, 1, dispatch.getLastRow(), 2);
var values = range.getValues();
values.map(function(row) {
if (row[0] == "BANANA")
row[1] = "YES";
});
range.setValues(values);
}
Метод массива JS map() выполняет большую часть работы. Мы конвертируем значения диапазона в массив JS и обратно после завершения сопоставления.