Я могу успешно вернуть значение из первой или последней позиции из сопоставленного поиска в листах Google с приведенным ниже кодом, используя indexOf () или lastIndexOf ().Есть ли способ, что он может вернуть все позиции и, следовательно, все значения поискового запроса, а не только один?Я понимаю, что indexOf () возвращает только 1 значение.По сути, если элемент присутствует более одного раза, метод indexOf возвращает позицию первого вхождения, а не всех из них.
Приведенный ниже код использует значение поля «модель» в моей форме интерфейса, чтобы найти позицию и вернуть цену из следующего столбца.
function getCost(model){
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Index");
var data = ws.getRange(1, 1,
ws.getRange("B1").getDataRegion().getLastRow(),
ws.getRange("C1").getDataRegion().getLastRow()).getValues();
var modelList = data.map(function(r){ return r[0]; });
var priceList = data.map(function(r){ return r[1]; });
var dateList = data.map(function(r){ return r[2]; });
var position = modelList.lastIndexOf(model);
var results = priceList[position];
if(position > -1){
return results;
} else {
return 'Please contact us for a valuation on this vehicle';
}
}
Возвращает цену соответствующего транспортного средства из формы, но если существует несколько совпадений одной и той же модели транспортного средства и разных цен, тогда я хочу вернуть все совпадающие значения, а не только одно.
Также в идеале я хочу вернуть все значения и найти среднюю цену возвращаемых значений.Это также возможно?
Заранее спасибо, я новичок в Javascript и Google Apps Script.