首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护谷歌工作表中的条件格式?

如何保护谷歌工作表中的条件格式?
EN

Stack Overflow用户
提问于 2020-03-01 06:58:12
回答 1查看 1.7K关注 0票数 0

我有两个CFs在一张纸上,我想保留在复制/粘贴,你可以看到范围和公式如下。

代码语言:javascript
运行
复制
CF1 Range : B3:H1001
CF1 Formula : =($A3<>"")*(B3="") //This one higlights the empty cells in a given range

CF2 Range : A3:R1001  // This one highlights the row if the cell in R column is No.
CF2 Formula : =$R:$R="No"

是否有办法保护这些CFs或在复制粘贴后再次应用它们?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-01 22:50:19

当我从另一个范围复制粘贴时,我正在失去我创建的条件格式。所以我希望它们保持格式化,或者在复制/粘贴之后再次应用它们。

从上面的答复中,我可以理解您希望保留条件格式,即=($A3<>"")*(B3="")表示B3:H1001=$R:$R="No"表示A3:R1001,即使范围被复制并粘贴到B3:H1001A3:R1001中。

如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一。

问题和解决办法:

不幸的是,在现阶段,没有任何方法可以直接保护Google脚本中的条件格式。因此,在这种情况下,作为一种解决办法,我建议在使用OnChange事件触发器更改条件格式和单元时覆盖条件格式。

流动:

  1. 复制范围并更改条件格式的参数。
  2. 脚本由OnChange事件触发器自动运行。
  3. 删除现有的条件格式并设置新的条件格式。

用法:

1.复制和粘贴示例脚本

请复制并粘贴以下示例脚本。

示例脚本:

请设置工作表名。

代码语言:javascript
运行
复制
function onChange(e) {
  const sheetName = "Sheet1";  // Please set the sheet name.

  if (e.source.getActiveSheet().getSheetName() != sheetName || e.changeType != "OTHER") return;

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var rules = sheet.clearConditionalFormatRules();
  const rule1 = SpreadsheetApp.newConditionalFormatRule()
    .setRanges([sheet.getRange("B3:H")])
    .setBackground("green")
    .whenFormulaSatisfied('=($A3<>"")*(B3="")').build();
  const rule2 = SpreadsheetApp.newConditionalFormatRule()
    .setRanges([sheet.getRange("A3:R")])
    .setBackground("green")
    .whenFormulaSatisfied('=$R:$R="No"').build();
  sheet.setConditionalFormatRules([rule1, rule2]);
  SpreadsheetApp.flush();  // This line might not be required.
}
  • 在这个示例脚本中,问题中的2种条件格式被设置为绿色的背景色。

2.安装OnChange事件触发器

3.试验运行

作为测试运行,请复制并粘贴sheetName中的范围。这样,脚本由OnChange事件触发器运行。

注意:

  • 我认为OnEdit事件触发器也可以使用。但是在这种情况下,当条件格式的参数被更改时,事件触发器就不会运行。所以我使用了OnChange事件触发器。

参考文献:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60472732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档