我有脚本根据下拉列表中的选定项设置单元格背景。有很多颜色可供选择。其中一些是黑暗的,所以暗文本是看不见的。有没有办法自动设置文本颜色与背景形成对比?
答案 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)
如果您使用条件格式,那么您可以为下拉菜单中的任何内容配置前景色和背景色。
如果您没有使用条件格式,您应该检查它是否符合您的要求,因为它是一个非常有用的功能,并且通常比在脚本中滚动自己更好。