Google Apps Script:getFontColorObject无法返回正确单元格字体颜色十六进制值
解决Google Sheets自定义函数返回字体颜色值异常的问题
你的自定义函数始终返回#ff000000,核心原因是:getFontColorObject().asRgbColor().asHexString()返回的是包含alpha通道的8位十六进制颜色值(格式为#RRGGBBAA),其中ff代表完全不透明的alpha值。而你预期的是不带alpha通道的6位十六进制(#RRGGBB),所以黑色会被返回为#ff000000,蓝色则是#ff0000ff。
两种修复方案:
方案一:使用getFontColor()直接获取6位颜色值
这个方法是Google Sheets API专门用于返回字体颜色的6位十六进制字符串,代码更简洁且符合需求:
function fontColor(a) { var b = a || "A1:A1"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var range = sheet.getRange(b); return range.getFontColor(); }
方案二:截取8位颜色值的后6位保留RGB部分
如果坚持使用ColorObject的方式,可以通过字符串截取去掉alpha通道部分:
function fontColor(a) { var b = a || "A1:A1"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var range = sheet.getRange(b); var fullHex = range.getFontColorObject().asRgbColor().asHexString(); return "#" + fullHex.slice(3); }
测试时,无论单元格字体是黑色还是蓝色,修改后的函数都会返回你预期的#000000或#0000ff。
内容的提问来源于stack exchange,提问作者Ian55603
相关产品推荐
相关产品推荐

