如何加快重条件格式规则

时间:2016-08-21 02:56:58

标签: performance google-apps-script google-sheets automation gs-conditional-formatting

在我们的营销公司/代理商处,我们使用Google表格中的主跟踪器来跟踪我们为客户处理的所有付费广告系列。文档越来越长,我们使用的各种条件格式规则在对文档进行任何更改时都会变得越来越慢。

五名员工在任何指定时间使用该文档,在对广告系列进行任何更改时更改“状态”列 - 如果已准备好上传,是否为LIVE,是否已暂停等。条件格式只需根据“STATUS”列中的值更改每行的颜色。它还会查看开始/结束日期,并在出现问题时将该行标记为红色。等

如何使用此文档加快处理速度? I have created a minified version of our tracker with one line for each conditional formatting rule to make it easy for you to have a look.

我确信有更聪明的方法来整合规则和/或构建一个可以更轻松,更有效地处理任务的脚本。

2 个答案:

答案 0 :(得分:4)

每当状态发生变化时,此答案都会使用脚本来更改行的背景颜色(适用于“READY”,“LIVE”和“DONE”)。

现场演示: https://docs.google.com/spreadsheets/d/1bVwM1wSBVlZTmz5S95RXSrRQxlTKWWN_Hl4PZ81sbGI/edit?usp=sharing

该脚本可在“工具 - 脚本编辑器...”菜单下查看。它由“onEdit”触发器激活(参见Is it possible to automate Google Spreadsheets Scripts (e.g. without an event to trigger them)?)。

这是脚本本身:

function onEdit(e) {

  var STATUS_COL = 18;
  var MAX_COLS = 18;

  var COLOR_READY = "grey";
  var COLOR_LIVE = "#512da8";
  var COLOR_DONE = "green";

  var activeSheet = SpreadsheetApp.getActiveSheet();
  var cell = activeSheet.getActiveSelection();
  var val = cell.getValues()[0][0];
  var color = null;

  switch (val) {
    case "READY":
      color = COLOR_READY;
      break;
    case "LIVE":
      color = COLOR_LIVE;
      break;
    case "DONE":
      color = COLOR_DONE;
      break;
  }

  if (color != null) {
     var row = activeSheet.getRange(cell.getRow(), 1, 1, MAX_COLS);
     row.setBackgroundColor(color);
  }

}

答案 1 :(得分:2)

根据某些条件,我有整行改变颜色。所以我将条件格式化面板中的复杂公式提取到工作表上的列(我得到“TRUE”或“FALSE”)并在条件格式规则中引用这些列。由于某些原因,条件格式化公式的计算比单元格内的相同计算慢得多。