在 Google Sheets 自定义函数中抛出自定义异常和错误消息?

问题描述 投票:0回答:4

Google Sheets(与Excel等)中,如果用户在公式中输入错误的输入,错误代码将打印在有问题的单元格中,并且一个小弹出窗口提供有关错误的更多详细信息。因此,如果我输入

=SQRT(-1)
,则会在单元格中打印
#NUM!
,并且弹出窗口会解释该值需要等于或大于 0。

如何使用 Google 表格中的自定义函数复制此内容?抛出异常大多有效。例如,如果我捕获越界输入值,然后抛出自定义异常,则

#ERROR!
会打印在有问题的单元格中(这很好),并且异常的伴随字符串会打印在相应的弹出窗口中(其中也很好)。问题在于 Google Apps 脚本引擎还将生成异常的相应源代码行附加到异常消息中。因此,弹出窗口不会简单地显示 “输入值必须介于 0.0 和 1.0 之间”,而是显示 “输入值必须介于 0.0 和 1.0 之间(第 199 行)”

有什么方法可以抑制行号的打印,或者覆盖弹出窗口的消息吗?我希望能够抛出自定义错误并为我的用户提供详细的错误消息。但我不希望他们因引用与他们无关的行号而感到困惑。

javascript google-sheets google-apps-script try-catch custom-function
4个回答
8
投票
if (some_condition)
{
  // will end execution with error    
  throw 'Error. My custom error description.';
}

3
投票

这是已报告的问题。

访问问题 4422,为其加注星标以进行投票和更新。


1
投票

只是添加到上面关于投掷的评论中。这很有效,因为在谷歌表格中,它将内部消息传递到弹出窗口。

if (!searchString || !list)
    throw "ERROR: NearMatchList requires 2 arguments.";


0
投票

使用

try...catch
和错误对象的 message 属性,然后返回错误消息而不是抛出错误。即:

/**
 *
 * @customfunction
 */
function myDiv(dividend,divisor){
  var quotient;
  try{
     quotient = dividend / divisor;
  } catch(error) {
     quotient = error.message;
  } finally {
     return quotient;
  }

}

参考

© www.soinside.com 2019 - 2024. All rights reserved.