加快电子表格的基本慢速谷歌脚本

时间:2013-11-27 21:01:04

标签: google-apps-script

我创建了一个简单的脚本,它迭代活动(选定)范围并检查单元格值是否小于0.如果是,则使单元格变为红色,否则为绿色!它工作正常,但需要很长时间(超过一分钟)才能在小纸张上运行(26个x 30列)

有没有人可以看到加快这个速度?

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');
      }
    }
  }
};

1 个答案:

答案 0 :(得分: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)
};