强制应用条件格式

Posted

技术标签:

【中文标题】强制应用条件格式【英文标题】:Force conditional formatting apply 【发布时间】:2014-08-15 10:59:39 【问题描述】:

我有一个带有条件背景格式规则的谷歌电子表格。当用户更改单元格时,我还有一个自动排序工作表的功能(它是具有优先级的任务列表)。不幸的是,自动排序可能会以某种方式为单元格设置错误的背景,可以通过选择一列然后单击“背景->重置参数”按钮手动修复。我需要自动对脚本执行相同操作以保持单元格的正确背景。如何强制 google-spreadsheet 使用其条件格式规则重新呈现单元格? 自动排序功能:

function onEdit(event)
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "A2:Z1000";

  if(editedCell.getColumn() == columnToSortBy)   
    var range = sheet.getRange(tableRange);
    range.sort(  column : columnToSortBy, ascending: false  );
    // code below doesn't help to solve the problem:
    //var statusRange = sheet.getRange("B2:B1000");
    //statusRange.clear(formatOnly: true)
    //statusRange.clearFormat();
    //SpreadsheetApp.flush()
  

【问题讨论】:

【参考方案1】:

可能发生的情况是您已将条件格式应用于一系列单元格。

当您的工作表按脚本排序时,部分/所有单元格可能会受到影响,因为条件格式适用的范围正在移动。

我会尝试回答您的问题,但我认为您可能从错误的角度看待问题。鉴于您的表格很大,除了标题行之外的整个页面?您可能错误地应用了条件格式。如果它作用于整个页面,则重新排序页面不应影响它。当在格式范围内添加或删除行时,我看到了类似的问题。所以如果你想发布你的格式规则,我可能会在那里发现一些东西。

回到您的问题。

var range = sheet.getRange(tableRange); is correct.

我不认为你可以使用

statusRange.clear(formatOnly: true)
statusRange.clearFormat();

因为 .clear 和 .clearFormat 应用于工作表。

您的表格看起来占据了整个表格,但标题行除外?如果是,那就试试吧。

sheet.clearFormat(); 

这将清除您的工作表格式,因此您现在只剩下白色背景颜色。

现在,我不知道使用脚本直接设置条件格式规则的任何方法。我自己确实有两种可能的解决方案。

放弃条件格式并使用脚本设置您想要的格式。

您可以直接设置各种单元格格式,背景颜色之一。 我不知道你想这样做,你的逻辑,但是有几个函数可以用 CSS 或 RGB 来完成,或者将范围设置为不同的颜色。

选择单元格或范围后,您可以使用

range.setBackground("red");

red 可以用符号替换,例如'#ff0000'。

使用隐藏的条件格式模板。

在您的标题行之后创建另一行。因此,将您的表格范围调整为

var tableRange = "A3:Z1000";

现在第 2 行成为您的模板。在第 2 行中设置所需的条件格式规则并隐藏该行。不要清除格式,而是将格式表单第 2 行复制到页面上。

var sheet  = event.source.getActiveSheet();
var source = sheet.getRange(2,1,1,26); // Gets row 2 

source.copyFormatToRange(sheet, 1, 26, 3, 1000);  // will repeat down rows.

【讨论】:

以上是关于强制应用条件格式的主要内容,如果未能解决你的问题,请参考以下文章

Java 设置Excel条件格式

如何将条件格式应用于 odt 文件?

如何制作一个 for 循环来应用条件格式?

如何将条件格式应用于命名范围?

应用规则后 Excel 条件格式公式更改

在两个单独工作表中的两个单元格之间应用条件格式