2013-11-27 3 views
0

Я создал простой скрипт, который выполняет итерацию по активному (выбранному) диапазону и проверяет, меньше ли значение ячейки. Если это так, это делает ячейку красной, иначе зеленой ! Он отлично работает, но занимает много времени (более минуты), чтобы бегать по маленькому листу (26хххх 30 колонн).Ускорить базовый медленный скрипт google для таблицы

Есть ли кто-нибудь, кто может посмотреть, чтобы ускорить это?

function colourize() { 
    var range = SpreadsheetApp.getActiveSheet().getActiveRange(); 
    var numRows = range.getNumRows(); 
    var numCols = range.getNumColumns(); 

    for (var i = 1; i <= numRows; i++) { 
    for (var j = 1; j <= numCols; j++) { 
     if(range.getCell(i,j).getValue() < 0) { 
     range.getCell(i,j).setBackground('#ea9999'); 
     } else { 
     range.getCell(i,j).setBackground('#b6d7a8'); 
     } 
    } 
    } 
}; 
+2

Это выглядит как хорошее применение для [условное форматирование] (https://support.google.com/drive/answer/78413? гл = ен). –

ответ

3

Просто сделать это на уровне массива, как это:

function colourize() { 
    var range = SpreadsheetApp.getActiveSheet().getActiveRange(); 
    var values = range.getValues(); 
    var BGColors = range.getBackgrounds(); 

    for (var i = 0; i < values.length; i++) { 
    for (var j = 0; j <values[0].length; j++) { 
     if(values[i][j] < 0) { 
     BGColors[i][j]='#ea9999'; 
     } else { 
     BGColors[i][j]='#b6d7a8'; 
     } 
    } 
    } 
    range.setBackgrounds(BGColors) 
}; 
+0

Я думаю, что 'var BGColors = range.getBackgrounds();' используется как сокращение, чтобы получить массив правильного размера для последующего вызова '.setBackgrounds()'. Это правильно? Если это так, это может быть даже быстрее, если вы просто перезаписали 'values' с цветами и использовали его для' .setBackgrounds() '. – Mogsdad

+0

вы, вероятно, правы, я искал простоту и легкость понимания. И это уже так быстро, что я не уверен, что можно почувствовать какую-либо разницу ;-) –

+0

Но помните это правило в гонках: второе место - первый неудачник! – Mogsdad

Смежные вопросы