自动文字颜色取决于背景颜色[google sheets]

时间:2018-05-15 08:06:37

标签: google-apps-script google-sheets

我有脚本根据下拉列表中的选定项设置单元格背景。有很多颜色可供选择。其中一些是黑暗的,所以暗文本是看不见的。有没有办法自动设置文本颜色与背景形成对比?

2 个答案:

答案 0 :(得分:1)

如果您要设置背景颜色,则可以同时设置字体颜色。我认为您的问题是“我如何自动找到与背景颜色形成对比的字体颜色”。

这有很长的代码here

有多种方法可以找到一种颜色,使用rgb值的十六进制表示来补充指定的颜色。

最简单的方法是对RGB值进行逻辑补充 - 它不一定令人愉悦,但它应该足够对比以便清晰:

function getOppositeColor(color) {
  // color comes in as #AAAAAA
  // step one - convert to a number - 0xAAAAAA
  var hex = '0x' + color.split("#")[1];
  var backgroundColor = parseInt(hex, 16);

  // take the logical compliment of it 0x000000 -> 0xffffff  
  var complement = 0xffffff ^ backgroundColor;

  // convert compliment to hex
  var complementHex = complement.toString(16);

  // complement Hex needs to be padded to 6 hex digits
  var padding = "";
  if (complementHex.length < 6) {
     padding = Array(6 - complementHex.length + 1).join("0");
  }

  var opposite = "#" + padding + complementHex;

  return opposite;  
}

这个简单的测试将为当前单元格设置对比字体颜色:

function setComplimentaryColor() {

  var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var background = cell.getBackground();

  var opposite = getOppositeColor(background);

  cell.setFontColor(opposite);
}

答案 1 :(得分:0)

如果您使用条件格式,那么您可以为下拉菜单中的任何内容配置前景色和背景色。

如果您没有使用条件格式,您应该检查它是否符合您的要求,因为它是一个非常有用的功能,并且通常比在脚本中滚动自己更好。