谷歌电子表格中交替背景行颜色的优化

Val*_*lip 4 javascript google-apps-script

我为电子表格中的偶数行设置了不同的背景颜色,Google Apps Script但速度非常非常慢......我该如何优化它?

电子表格示例:https : //docs.google.com/spreadsheets/d/1yRotjooCRpuuSTjjgFEzw4xxqPLJwMZJPchYQeNvUyw/edit? usp =sharing

通过转到工具 -> 脚本编辑器查看 GS 代码...

这是代码:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getRange("A1:Z1000");
  ss.setActiveRange(range);
  var totalRows = SpreadsheetApp.getActiveRange().getNumRows();
  var totalColumns = SpreadsheetApp.getActiveRange().getNumColumns();
  var startRow = SpreadsheetApp.getActiveRange().getRow();
  var startColumn = SpreadsheetApp.getActiveRange().getColumn();
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = startRow;
  while (row < totalRows+startRow)
  {
    var column = startColumn;
    while (column < totalColumns+startColumn){
      if(row%2 == 0){
         sheet.getRange(row, column).setBackground("#F3F3F3");
      }
      column++;
    }
    row++;
  }
}
Run Code Online (Sandbox Code Playgroud)

Kos*_*Kos 5

您可以使用新的applyRowBanding()

将默认的行带主题应用于范围。默认情况下,条带具有页眉而没有页脚颜色。

例子:

function setColors() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getRange("A1:Z1000");
  
  // first remove any existing alternating colors in range to prevent error "Exception: You cannot add alternating background colors to a range that already has alternating background colors."
  range.getBandings().forEach(banding => banding.remove());
  // apply alternate background colors
  range.applyRowBanding();
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

有关更多选项,请参阅


Mau*_*aes 4

逐行而不是逐个单元地进行。您也可以直接在要更改的行上循环。

function setBackgroundColorOnEvenLines() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getActiveSheet();
  var totalRows = sheet.getMaxRows();
  var totalColumns = sheet.getMaxColumns()

  for (var i=2; i <= totalRows; i+=2){
      sheet.getRange(i, 1, 1, totalColumns).setBackground("#F3F3F3");
  }
}
Run Code Online (Sandbox Code Playgroud)

此参考展示了如何像上面一样引用整行。