求Google Sheets自定义公式:基于HEX值设置指定单元格背景色
实现Google Sheets自定义HEX上色公式(颜色持久不消失)
第一步:添加Apps Script代码
- 打开你的Google Sheets文档,点击顶部菜单栏的「扩展程序」→「Apps Script」。
- 清空默认的
Code.gs内容,粘贴以下代码:
function SET_HEX_COLOR(hexColor, targetCell) { // 处理HEX颜色格式:去掉#(如果有),统一转为大写 const cleanHex = hexColor.toString().replace(/^#/, '').toUpperCase(); // 验证HEX格式有效性(6位或3位) if (!/^([0-9A-F]{3}){1,2}$/.test(cleanHex)) { return "无效HEX格式"; } // 补全3位HEX为6位(比如#F00转为#FF0000) const fullHex = cleanHex.length === 3 ? cleanHex.split('').map(c => c + c).join('') : cleanHex; const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); let targetRange; if (targetCell) { // 如果指定了目标单元格,直接使用该范围 targetRange = sheet.getRange(targetCell); } else { // 默认使用当前单元格右侧相邻的单元格 const currentCell = sheet.getActiveCell(); targetRange = sheet.getRange(currentCell.getRow(), currentCell.getColumn() + 1); } // 设置目标单元格背景色 targetRange.setBackground(`#${fullHex}`); // 返回成功提示(可选,也可以返回空) return "已设置颜色"; }
- 点击脚本编辑器顶部的「保存」按钮,给项目起个名字(比如HexColorSetter)。
第二步:使用自定义公式
在任意单元格输入以下公式即可:
- 默认用法(给右侧相邻单元格上色):在A1单元格输入
=SET_HEX_COLOR("#FF5733"),回车后B1单元格会立刻变为橘红色,即使之后删除A1的公式,B1的颜色也会保留。 - 指定目标单元格:在A1输入
=SET_HEX_COLOR("#33FF57", "C1"),回车后C1单元格会变为绿色,同样颜色不会随公式删除消失。 - 支持不带#的HEX值:
=SET_HEX_COLOR("00FFFF", D2)也能正常识别为青色。
方案优势
- 完全避开onEdit冲突:无需依赖编辑触发脚本,仅在调用公式时执行颜色设置
- 颜色持久:直接修改单元格背景色,不是条件格式或临时样式,删除公式/HEX值不影响
- 兼容多种HEX格式:支持带#或不带#,3位或6位的HEX颜色码
- 灵活控制目标:可指定任意单元格作为上色目标,默认右侧相邻单元格
第一次运行公式时,会弹出权限授权提示,按照指引完成授权即可正常使用。
内容的提问来源于stack exchange,提问作者Audrey G
相关产品推荐
相关产品推荐

