google-apps-script - 自动文本颜色取决于背景颜色 [google sheet]
问题描述
我有脚本设置单元格背景取决于下拉列表中的选定项目。有很多颜色可供选择。其中一些是深色的,因此深色文本是不可见的。有没有办法自动设置文本颜色与背景形成对比?
解决方案
如果您正在设置背景颜色,那么您可以同时设置字体颜色。我认为您的问题是“我如何自动找到与背景颜色形成对比的字体颜色”。
这有一个很长的答案,这里有很多代码。
有多种方法可以使用 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);
}
推荐阅读
- javascript - react JS中的私有路由jsx
- vb.net - 替换word文件中的图片
- matlab - 未能在库“powerlib”中找到“电力电子/全桥转换器”?
- elasticsearch - 基于文本相似度的 Elasticsearch 折叠
- amazon-s3 - 无法通过 CDK 创建具有 KMS_MANAGED 密钥和 bucketKeyEneabled 的 S3 存储桶
- google-bigquery - 尝试从 AVRO 文件创建表时 BQ 加载作业失败
- python - 使用 Python 删除控制字符
- mysql - SequelizeEagerLoadingError: 福利未关联招募
- flutter - 如何在 Flutter Stepper 中添加替代标签?
- javascript - Firebase 使用 orderByChild() 删除数据?