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

n3schb8v  于 2023-03-11  发布在  Java
关注(0)|答案(4)|浏览(163)

在Google Sheets中(如Excel等),如果用户在公式中输入了错误的内容,就会在出错的单元格中打印出错误代码,并弹出一个小窗口提供有关错误的更多细节。因此,如果我输入“=SQRT(-1)”,就会在单元格中打印出“#NUM!”,弹出窗口解释该值必须等于或大于0。
如何在Google Sheets中使用自定义函数来实现这一点?抛出异常通常有效。例如,如果我捕获一个越界输入值,然后抛出一个自定义异常,在出错的单元格中打印“#ERROR!”(这很好),并且异常的伴随字符串将打印在相应的弹出窗口中问题是Google Apps脚本引擎也会在异常消息中附加生成异常的相应源代码行,因此弹出窗口中不会简单地阅读“输入值必须介于0.0和1之间。0”,它将读取“输入值必须介于0. 0和1. 0之间(第199行)"。
有没有办法禁止打印行号,或者覆盖弹出窗口的消息?我希望能够抛出自定义错误,并为用户提供详细的错误消息。但我不希望他们因为引用了与他们无关的行号而感到困惑。

v09wglhw

v09wglhw1#

if (some_condition)
{
  // will end execution with error    
  throw 'Error. My custom error description.';
}
toe95027

toe950272#

这是已报告的问题。
访问Issue 4422,星星投票和更新。

kxe2p93d

kxe2p93d3#

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

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

}

参考文献

3duebb1j

3duebb1j4#

只是添加到上面关于投掷的评论中。这很好用,因为在谷歌工作表中,它将内部的emessage携带到弹出窗口中。

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

相关问题