【问题标题】: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()
  }
}

【问题讨论】:

    标签: google-sheets gs-conditional-formatting


    【解决方案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.
    

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多