Существующий скрипт обновляет все строки, потому что он зацикливается на for(var i=0;i>lastRow;i++){
. Следующий скрипт демонстрирует процесс поиска отдельного термина.
Я не собираюсь заниматься обновлением «нового значения», поскольку это не ясно из вопроса.
Аспекты к сведению
- скрипт получает все данные о BSR -
var bsrdata = bsr.getRange(1,1,bsrLR,bstLC).getValues();
. Это можно использовать позже при обновлении значений. - с использованием метода Javascript map , столбец A извлекается как отдельный массив для поиска -
var bsrColA = bsrdata.map(function(e){return e[0];});//[[e],[e],[e]]=>[e,e,e]
- поискапроводится с использованием метода Javascript indexOf . Примечание: если совпадение найдено, метод возвращает порядковый номер поискового термина в массиве;если совпадений не найдено, метод возвращает «-1».
- скрипт проверяет, был ли поиск успешным:
if (result !=-1){
indexOf
возвращает индекс, начинающийся с нуля, поэтому фактическим номером строки является индекс плюс один: var row = result+1;
function so5866895401() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formsheetname = "ENTRY FORM";
var form = ss.getSheetByName(formsheetname);
var bsrname = "BSR DATA";
var bsr = ss.getSheetByName(bsrname);
// get input cell on form
var searchterm = form.getRange("G6").getValue();
// Logger.log(searchterm);// DEBUG
//get data from BSR
var bsrLR = bsr.getLastRow();
var bstLC = bsr.getLastColumn();
var bsrdata = bsr.getRange(1,1,bsrLR,bstLC).getValues();
// get column A of BSR
var bsrColA = bsrdata.map(function(e){return e[0];});//[[e],[e],[e]]=>[e,e,e]
// Logger.log(bsrColA);// DEBUG
// search for the searchterm in ColumnA of BSR
var result = bsrColA.indexOf(searchterm); // zero-based
if (result !=-1){
var row = result+1;
Logger.log("result = "+result+", row = "+row);
}
}