【问题标题】:How to speed up heavy conditional formatting rules如何加快繁重的条件格式规则
【发布时间】:2018-04-26 00:54:35
【问题描述】:

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

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

如何使用此文档加快处理速度? 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.

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

【问题讨论】:

  • 显然是最直接的解决方案,感谢您指出。如果我们希望保留整行,我相信有更高效的方式来做我们所做的事情?就像组合规则和/或完全找到不同的解决方案。对此有什么想法吗?

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


【解决方案1】:

此答案使用脚本在状态更改时更改行的背景颜色(适用于“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);
  }

}

【讨论】:

  • 多么有趣!几个问题,脚本是否比 CF 占用资源少?如果我需要同时调整每一行的文本颜色(改变背景颜色和文本颜色),这个附加代码是什么?
  • 我不知道脚本是否比 CF 占用更多或更少的资源。文字颜色的函数是“setFontColor”,见developers.google.com/apps-script/reference/spreadsheet/…。
  • 感谢您的帮助,赏金是您的 :-) 如果您对文档中的其他条件格式规则有解决方案,那也将是最有帮助的。有一些重叠的,需要以某种顺序运行才能正常工作,我仍然在努力解决。
  • 很高兴为您提供帮助 :) 回复:其他规则,如果您用通俗易懂的语言写下您想要的功能(如果发生这种情况,否则会发生其他事情,等等,就像您在问题中所做的那样)。我很乐意提供帮助。
  • 我开始输入它,但老实说,通过简单地观察上面测试文档中已经存在的规则,它更容易理解。有 13 条 CF 规则总是在所有行上按顺序运行,如果它们可以被脚本化,那就太棒了。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2015-04-08
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多