У меня есть этот фрагмент кода ниже, что при поиске значения текущей ячейки время выполнения составляет около 6,87 сек.Время выполнения моего кода составляет около 7-8 секунд.Также кажется, что Google Sheets буферизует намного дольше после выполнения кода.Я не могу ускорить их.
Для кода я несколько раз переписывал код, пытаясь разместить массивы там, где это возможно.Я добавил проверку данных в надежде, что она найдет значение быстрее.Что касается проблем с Google Sheets, я попытался очистить кэшированные данные и попробовал два разных браузера.Казалось, что ничего не работает
function onEdit () {
var data = SpreadsheetApp.getActiveSpreadsheet();
var ordersheet =data.getActiveSheet();
var reference = ordersheet.getSheetName();
var cleared = ordersheet.getActiveCell().clearDataValidations();
if(reference == "Order Sheet") {
var ranged = ordersheet.getActiveRange();
var sheetName= ranged.getValue();
var pullName = data.getSheetByName(sheetName);
var datass = pullName.getRange(3, 1, pullName.getLastRow(),
1).getValues();
var validationRule =
SpreadsheetApp.newDataValidation()
.requireValueInList(datass).build();
ordersheet.getActiveCell().offset(1, 0,
15).setDataValidation(validationRule);
var spreadsheet = SpreadsheetApp.getActiveSheet();
var off = spreadsheet.getCurrentCell().offset(1, 5).activate();
var row = spreadsheet.getCurrentCell().getRow();
var col = spreadsheet.getCurrentCell().getColumn();
var formulas = [
['=Iferror(INDEX(INDIRECT(R[-1]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-1]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-2]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-2]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-3]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-3]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-4]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-4]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-5]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-5]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-6]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-6]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-7]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-7]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-8]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-8]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-9]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-9]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-10]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-10]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-11]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-11]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-12]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-12]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-13]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-13]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-14]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-14]C[-5]&2),0),2),"Please Add Item to Customer Price
List")'],
['=Iferror(INDEX(INDIRECT(R[-15]C[-5]&1),MATCH(R[0]C[-5],
INDIRECT(R[-15]C[-5]&2),0),2),"Please Add Item to Customer
Price List")']
];
var area = spreadsheet.getRange(row,col,15);
area.setFormulasR1C1(formulas);
}};
Код работает для настройки листа, но мне просто нужно, чтобы он работал быстрее.