Google Sheets Apps Script颜色对比问题:自定义函数始终返回0
问题解决:自定义函数始终返回0的原因及修复方案
你的代码核心问题是调用方法时遗漏了括号:getBackground是Google Apps Script的方法,必须通过getBackground()调用才能获取单元格的背景色值,而非直接引用方法本身。直接写getBackground会拿方法的引用和字符串#ffff00做比较,结果必然不相等,因此会走到else分支返回0。
修正后的代码
function score(input) { var row = input; var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = sheet.getDataRange(); // 关键:getBackground后加()调用方法获取颜色值 if (range.getCell(row, 4).getBackground() === '#ffff00') { return 7; } else if (range.getCell(row, 5).getBackground() === '#ffff00') { return 5; } else if (range.getCell(row, 6).getBackground() === '#ffff00') { return 4; } else if (range.getCell(row, 7).getBackground() === '#ffff00') { return 2; } else { return 0; } }
额外注意事项
- 建议使用严格相等运算符
===代替==,避免类型转换导致的意外问题 - 如果修正后仍不生效,可先打印日志确认实际返回的颜色格式:Google Sheets有时会返回
rgb(255, 255, 0)这类RGB格式,而非十六进制。可通过console.log(range.getCell(row,4).getBackground())查看实际值,再调整判断条件。
内容的提问来源于stack exchange,提问作者Alejandro Corredor Parra
相关产品推荐
相关产品推荐

