gpt4 book ai didi

google-apps-script - 找不到方法 getRange(number,number,number,(class))

转载 作者:行者123 更新时间:2023-12-03 20:29:07 30 4
gpt4 key购买 nike

只想创建简单的填充器以在其他功能中使用它:

function fillLine(row, column, length, bgcolor)
{
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1+row, 1+column, 1, length).setBackground(bgcolor)
}

但是得到:“找不到方法 getRange(number,number,number,(class))”。

是否可以创建一个?

添加于 2014 年 10 月 23 日 23:32 GMT+2

我试图运行函数本身。选中运行菜单中的选项“fillLine”。当我将其更改为我的主要功能“onOpen”时,一切正常。对于其他函数,即使没有参数,我也可以运行它们,但对于这个函数则不行。也许有人可以解释一下?

最佳答案

您正在调试器中运行它,没有任何参数。如果您想这样做,则需要确保在使用参数之前定义了适当的默认值,否则解释器将开始进行猜测。

如果参数为空,这可以通过提供默认值来解决问题:

function fillLine(row, column, length, bgcolor)
{
row = row || 0;
column = column || 0;
length = length || 1;
bgcolor = bgcolor || "red";
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1+row, 1+column, 1, length).setBackground(bgcolor)
}

或者,您可以使用这样的测试函数,并从调试器调用:

function test_fillLine() {
fillLine(0, 0, 1, 'red');
}

还有其他方法,其中一些在Is there a better way to do optional function parameters in Javascript?中进行了描述。


所以这是怎么回事?

Javascript 参数未显式键入。因此,解释器必须在运行时检查传递的对象以确定它们的类型。

在此示例中,没有传递任何参数,所有参数都设置为 undefined 值,且类型为“Undefined”。

当调用函数时,解释器需要确定有时应用多个签名中的哪一个。 (Sheet.getRange 有 4 个变体。)为此,它必须解析所提供参数的数量和类型。

所以,我们开始...

  • 1+row1+column 被识别为数字,因为文字“1”是一个数字。
  • 1 显然是一个数字
  • length 是一个 undefined object ,并且没有任何其他对象提供提示,解释器认为它是一个普通的

因此,解释器决定需要查找 sheet 对象的 getRange 方法,其签名为 number, number, number, class 。它找不到,并抛出您看到的异常。

关于google-apps-script - 找不到方法 getRange(number,number,number,(class)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535173/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com