首页 > 解决方案 > 带来细胞的位置而不是它的价值

问题描述

我正在尝试使用 Apps 脚本为 Google 表格创建自定义公式。该函数将返回单元格的十六进制背景颜色(例如,=getHEX(B1)将返回单元格 B1 的颜色)。

我的问题是我可以带来单元格的价值,而不是位置。如果我在函数中使用引号,它可以工作(=getHEX("B1"))但我想知道如何避免使用引号并仍然获得单元格的值。

我尝试使用A1Notation函数,据说它带来了位置(B1),但是当添加到函数中时,我仍然得到相同的错误(未找到范围)。以下是作为参考的功能:

function getHEX(cellReference) {   
   const getCell = SpreadsheetApp.getActiveSheet().getRange(cellReference.toString()).getBackground();
   return getCell;
}

标签: google-apps-scriptgoogle-sheets

解决方案


问题:

  • 不幸的是,没有直接=getHEX(B1)的方法可以做到这一点,因为会直接传递值,而不是谷歌应用程序脚本中用于获取背景的实际范围

简单的解决方法:

  • 您可以使用ADDRESSROWCOLUMN将引用作为字符串在 google 表格端获取,并将其作为参数传递到您的自定义函数中,以便getRange(a1Notation)方法可以使用它。

解决方案:

解决方案1:

谷歌应用脚​​本:

function getHEX(cellReference) {
   const getCell = SpreadsheetApp.getActiveSheet().getRange(cellReference).getBackground();
   return getCell;
}

谷歌表格:

=getHEX(ADDRESS(row(E4),column(E4),4))

获取单元格的背景颜色E4。您也可以通过这种方式向下拖动公式。

在此处输入图像描述


解决方案2:

直接使用坐标,但构造函数以接受两个参数(x 和 y)。

谷歌应用脚​​本:

function getHEX(x,y) {
   const getCell = SpreadsheetApp.getActiveSheet().getRange(x,y).getBackground();
   return getCell;
}

谷歌表格:

=getHEX(row(E4),column(E4))

在此处输入图像描述


推荐阅读