You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:54:54