无法通过脚本获取范围内的特定值



我想做一些非常简单的事情,这是传递一个范围到一个脚本函数在谷歌表,并有它返回第一行的第一个值。下面是我的函数:

function totalTake(pRange) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(pRange)
const numRows = range.getNumRows();
const numCols = range.getNumColumns();
return range[0,0]
}

我已经用参考1,1尝试过了,没有什么不同。我在单元格中传入=totalTake("F4:H74"),在第一个值中肯定有一个字符串值。它返回正确的行数或列数,因此它得到一个数组,但我怀疑其中没有值。我已经尝试修改sheet =作业,以包括当前的工作表;没有任何区别:返回值为空。

我到底错过了什么?

编辑:以这种方式提出问题可能会产生误导,但它应该被视为"在x和y的确定位置获得任意单元格值",而不仅仅是第一行中的第一个单元格。但是,在迭代时,我未能让它找到值,导致我怀疑提取的范围充满了空值,我将其简化为只找到一个已知值的单元格。

稍微详细说明一下这个问题:这些值的数组使用基于0还是基于1的数组表示法?答:基于零的

我相信你的目标如下。

  • 您要检索范围的第一行和第一列的值。
  • 你想使用脚本作为自定义函数
  • =totalTake("F4:H74")被放入一个单元格时,您想要检索单元格"f4"的值。
    • it return the first value in the first row.,我是这样理解的。

在这种情况下,我想建议修改return range[0,0]如下:

:

return range[0,0]

:

return range.getValue();
  • 在此修改中,当将=totalTake("F4:H74")放入单元格时,单元格的值"F4"返回。
    • it return the first value in the first row.,我是这样理解的。如果我误解了你的目标,请告诉我。我想修改一下

注意:

  • 在您的脚本中,似乎没有使用numRowsnumCols。当需要使用时,请修改脚本。
  • 参考:

  • getValue ()

补充道:

从以下回复中,

实际目标是获取范围内任意x,y位置的值。

我理解如下。

  • 您希望通过给出范围的坐标来从范围中检索值。但在本例中,坐标的左上角是(x, y) = (0, 0)

在这种情况下,下面的修改如何?

:

return range[0,0]

:

return range.offset(y, x).getValue();
  • 在这种情况下,请放入=totalTake("F4:H74", 5, 5)的自定义公式。在本例中,单元格"K9"返回。
  • 参考:

  • 抵消(rowOffset columnOffset)
  • offset(rowOffset, columnnoffset, numRows, numColumns)
    • 例如,当您使用此方法时,您还可以通过提供坐标和长度来检索值。

最新更新