Google sheets 强制应用条件格式
我有一个google spreadseet表格,上面有条件背景格式规则。我还有一个功能,可以在用户更改单元格时自动排序(这是一个具有优先级的任务列表)。不幸的是,自动排序可能会以某种方式为单元格设置错误的背景,可以通过选择列,然后单击“背景->重置参数”按钮手动修复。我需要对脚本自动执行相同的操作,以保持单元格的正确背景。如何强制google电子表格使用其条件格式规则重新呈现单元格? 自动排序功能:Google sheets 强制应用条件格式,google-sheets,gs-conditional-formatting,Google Sheets,Gs Conditional Formatting,我有一个google spreadseet表格,上面有条件背景格式规则。我还有一个功能,可以在用户更改单元格时自动排序(这是一个具有优先级的任务列表)。不幸的是,自动排序可能会以某种方式为单元格设置错误的背景,可以通过选择列,然后单击“背景->重置参数”按钮手动修复。我需要对脚本自动执行相同的操作,以保持单元格的正确背景。如何强制google电子表格使用其条件格式规则重新呈现单元格? 自动排序功能: function onEdit(event){ var sheet = event.sour
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()
}
}
可能发生的情况是,您已将条件格式应用于一系列单元格 当工作表按脚本排序时,部分/所有单元格可能会受到影响,因为条件格式应用的范围正在移动 我会尽力回答你的问题,但我认为你可能从错误的角度看待这个问题。考虑到您的表很大,除了标题行之外,整个页面都是吗?您可能不正确地应用了条件格式。如果它作用于整个页面,则重新排序页面不应影响它。在格式化范围内添加或删除行时,我也遇到过类似的问题。所以,如果你想发布你的格式规则,我可能会在那里发现一些东西 回到你的问题上来
var range = sheet.getRange(tableRange); is correct.
我想你用不了
statusRange.clear({formatOnly: true})
statusRange.clearFormat();
range.setBackground("red");
因为.clear和.clearFormat应用于工作表
您的表似乎占用了除标题行之外的整个工作表?如果是这样,那就试试看
sheet.clearFormat();
这将清除您的工作表格式,使您现在的背景颜色为白色
现在,我不知道如何使用脚本直接设置条件格式规则。我有两种可能的解决方案,我自己也用过
放弃条件格式,并使用脚本设置所需的格式。
您可以直接设置各种单元格格式,其中一种是背景色。
我不知道你想做什么,你的逻辑,但有几个功能可以用CSS或RGB来做,或者设置不同颜色的范围
选择了可以使用的单元格或区域后
statusRange.clear({formatOnly: true})
statusRange.clearFormat();
range.setBackground("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.