Как ускорить функцию удаления строк в Google App Script - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь пробежать несколько сотен строк данных и удалить строки, которые имеют 0 в C и D. Удаление тех, которые соответствуют этому случаю, похоже, работает, но это действительно требует своего времени, чтобы пройти.Я новичок в написании сценариев (я не программист, просто пытаюсь учиться), и я не могу понять, как сделать это быстрее.Основной сценарий пришел от кого-то другого, я добавил логику для двух столбцов, а не для одного.Есть идеи?

function deleteZeroes() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Email_Help_Total_Input');
  var range1 = s.getRange('C:C');
  var cValues = range1.getValues();
  var range2 = s.getRange('D:D');
  var dValues = range2.getValues();  

  for(var i=cValues.length-1;i>=0;i--)
    if(cValues[0,i]==0 && dValues[0,i]== 0) 
      s.deleteRow(i+1);

}

Работает, но медленно.Просто пытаюсь сделать это немного быстрее.Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2019

Массив, а не чтение и запись!

data = s.getDataRange().getValues();
result = [];

for (i=0;i<data.length;i++) {
   if (data[i][2]==0) continue; //checks C, if it finds it continues the loop
   if (data[i][3]==0) continue; //checks D, if it finds it continues the loop
   result.push(data[i]);//only those that fell through the 0 checks will be here
}
s.getDataRange().clear();
s.getRange(1,1,result.length,result[0].length).setValues(result);

Таким образом, он считывает все данные одновременно, проверяет все данные и копирует правильные строки в новый массив результатов, удаляет старые данные и затем вставляетверните хорошие данные.В зависимости от размера вы должны увидеть эту функцию через 30 секунд.

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