我对谷歌应用程序脚本相当新,我在尝试“你的第一个自定义功能”教程时遇到了这个问题。
=in2mm(1) -> 25.4
=in2mm(2) -> 50.8
=in2mm() -> #ERROR (error: input must be a number (line 6))
=in2mm(pi()) -> 79.7964534011807
=in2mm(a) -> #NAME? (error: Unknown range name a)
=in2mm(*) -> #ERROR (error: Parse error)
我正在尝试了解Google应用脚本中“throw”功能的用法。如何在我的第3行产生“输入必须是数字”,而第5和第6行产生其他一些结果?
答案 0 :(得分:2)
您可以通过添加一些这样的案例处理来使错误消息更加明确:
function in2mm(inNum) {
// Function to convert from INCHES to MILLIMETERS
var outNum = 0; // this will hold the answer
var factor = 25.4; // multiply input by this factor to get output
if (inNum == "") { // check to make sure input is a number
throw ("error: input must not be empty"); // throw an exception with the error message
}else if (typeof inNum != "number") { // check to make sure input is a number
throw ("error: input must be a number (now it is a "+typeof inNum+")"); // throw an exception with the error message
}
outNum = inNum * factor; // calculate the answer
return outNum; // return the answer to the cell which has the formula
}
但是参数必须是'有效'才能由函数处理...在你的例子中=in2mm(a)
a被解释为命名区域,因为你没有一个名为'a'的区域在尝试执行该函数之前发生错误。这就是为什么错误消息不是来自函数本身,而是来自电子表格下的“引擎”。
另一个例子=in2mm(*)
返回一个Parse错误,原因相同,参数无效,在这种情况下它也不能是一个范围......你也可以尝试+或 - ,它会尝试计算一些东西,但它不能再次出现错误信息来自电子表格,而不是来自你的函数。
尝试使用有效范围并更改目标单元格中的值,您会看到完全不同的结果。例如,在A2
中写=in2mm(A1)
并使用A1
希望我让事情变得更清晰一些; - )
答案 1 :(得分:0)
如果您在代码中发现了错误,那么您可以抛出错误,这就是您在第三个示例中看到的错误。例如,代码看起来像......
function in2mm(inches){
if (inches == null){
throw 'input must be a number';
}
}
在您提供的最后两个示例中,您的功能未捕获错误,而是被Google电子表格捕获。