首页 > 解决方案 > 在 Google 表格中计算具有特定背景颜色的单元格

问题描述

我正在尝试使用 Google 表格为我的餐厅制作视觉轮播表。我需要计算一行的背景颜色,以获得当天工作半小时的数字。

以下是谷歌表的链接:

https://docs.google.com/spreadsheets/d/19IEDGZypi3nVt55-OayvPo__pbV0sTuRQ3wCJZ1Mhck/edit?usp=sharing

我正在使用的脚本:

function countBG(range, colorref) {

  var sheet = SpreadsheetApp.getActiveSheet();
  var color = sheet.getRange(colorref).getBackground();
  var range = sheet.getRange(range);
  var rangeVal = range.getValues();
  var count = 0;
  var allColors = range.getBackgrounds();
  for (var i = 0; i < allColors.length; i++) {
      for (var j = 0; j < allColors[0].length; j++) {
          if (allColors[i][j] == color) count += 1;
      };
  };
  return count;
}

我发现该脚本第一次运行时可以运行,但之后它会出现错误:

未找到范围(第 4 行,文件“代码”)

将不胜感激任何帮助,让这个工作,我是新的谷歌表格和脚本,所以可能会遗漏一些明显的东西。

谢谢,

D B。

标签: google-apps-scriptgoogle-sheets

解决方案


如果您想将其作为自定义函数运行并仅使用单行作为输入,这将起作用。

你会像这样传递行变量=countBG("D6:AH6")

function countBG(input) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var colors = sheet.getRange(input).getBackgrounds();
  var count = 0;
  Logger.log(colors);
  for (var i = 0; i < colors.length; i++) {
      for (var j = 0; j < colors[0].length; j++) {
          if (colors[i][j] != "#ffffff") count += 1;
      };
  };
  Logger.log(count);
  return count;
}

AI 列中工作表中的示例


推荐阅读