谷歌表格脚本 - 输出单元格背景色的函数

4

我想在Google Script中编写自己的函数,以便在Google Sheets中使用它来获取单元格的背景颜色。我们将该函数命名为GETBACKGROUNDCOLOR。

我希望能够传递一个单元格引用(以A1表示法)作为参数。例如,如果我调用=GETBACKGROUNDCOLOR(B2),它应返回单元格B2的背景颜色。如果我没有输入参数调用该函数,则希望它返回在其所在的单元格的背景颜色,例如,在C3中调用=GETBACKGROUNDCOLOR()应返回C3的背景颜色。

我尝试了以下代码:

function GETBACKGROUNDCOLOR(cell){
  return SpreadsheetApp.getActiveSheet().getRange(cell).getBackground();
}

当我调用GETBACKGROUNDCOLOR(A1)函数时,参数不是A1单元格的引用,而是A1单元格中的内容。

我该如何解决这个问题?


1
GETBACKGROUNDCOLOR("A1") - TheMaster
我希望能够复制公式并在此过程中更新单元格引用,因此字符串将无法起作用。 - finaslonchas
3个回答

4
以下是强健的脚本:
1. 将其粘贴到 AppsScript 中:
function bgHex(cellAddress) {
 var mycell = SpreadsheetApp.getActiveSheet().getRange(cellAddress);
 var bghex = mycell.getBackground();
 return bghex;
}

2. 调用该函数时,使用 =bgHex(CELL("address"; B4))=bgHex(CELL("address", B4)),具体取决于您的语言环境。仔细观察并注意区别: 分隔符。一些国家(如波兰)使用逗号作为小数分隔符,我们使用分号来分隔参数。其他国家使用点作为分隔符,这样他们就可以使用逗号来分隔参数。

使用此函数,您将获得指定单元格背景的十六进制代码。任何单元格都可调用,无范围错误,无不匹配的数据格式。

现在您可以尝试从这些单元格中获取其他内容,例如检查单元格值。这里有一个测试表格,以便您了解其工作原理。

您将在那里找到第二个函数,用于提取单元格的值-原理相同。

function cellValue(cellAddress) {
  var mycell = SpreadsheetApp.getActiveSheet().getRange(cellAddress);
  var value = mycell.getValue();
return value;
}

现在前往 https://developers.google.com/apps-script/reference/spreadsheet/range 并尝试其他方法。

3

您可以尝试类似以下的方法:

=GETBACKGROUNDCOLOR("A"&row(A1))

或者

=GETBACKGROUNDCOLOR(cell("address", A1))

并查看是否有效?

(注意:根据您的环境设置,您可能需要使用分号而不是逗号。)


1
你可以使用 =address 来解析名称。
=GETBACKGROUNDCOLOR(address(row(A1),column(A1)))

对于相对单元格或

=GETBACKGROUNDCOLOR(address(row(),column()))

对于带公式的单元格

然而,一个大问题是如果你改变单元格背景颜色,公式不会重新计算(函数重新评估不会触发),所以这可能并不是一个完美的方法。

示例表格: https://docs.google.com/spreadsheets/d/1lfFRLVqhns0AJCbZd6ikgcDtvktcgpNWfNomMASWemE/edit#gid=0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接