Часть кода приложения работает медленно? или это Google Sheets? - PullRequest
1 голос
/ 11 июня 2019

У меня есть этот фрагмент кода ниже, что при поиске значения текущей ячейки время выполнения составляет около 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);

      }};

Код работает для настройки листа, но мне просто нужно, чтобы он работал быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...