【问题标题】:Throwing custom exceptions and error messages in Google Sheets custom function?在 Google 表格自定义功能中引发自定义异常和错误消息?
【发布时间】:2014-11-26 23:00:21
【问题描述】:

在 Google 表格(如 Excel 等)中,如果用户在公式中输入了错误的输入,则会在有问题的单元格中打印错误代码,并且一个小弹出窗口会提供有关错误的更多详细信息。所以如果我输入 '=SQRT(-1)', '#NUM!'打印在单元格中,并且弹出窗口说明该值需要等于或大于 0。

如何使用 Google 表格中的自定义函数复制此功能?抛出异常通常有效。例如,如果我捕获一个越界输入值,然后抛出一个自定义异常,“#ERROR!”打印在有问题的单元格中(这很好),异常的随附字符串打印在相应的弹出窗口中(这也很好)。问题在于 Google Apps 脚本引擎还将生成异常的相应源代码行附加到异常消息中。因此,弹出窗口不会简单地显示“输入值必须介于 0.0 和 1.0 之间”,而是会显示“输入值必须介于 0.0 和 1.0 之间(第 199 行)”。

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

【问题讨论】:

    标签: javascript google-apps-script google-sheets try-catch google-sheets-custom-function


    【解决方案1】:
    if (some_condition)
    {
      // will end execution with error    
      throw 'Error. My custom error description.';
    }
    

    【讨论】:

      【解决方案2】:

      这是一个已报告的问题。

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

      【讨论】:

        【解决方案3】:

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

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

        参考

        【讨论】:

          猜你喜欢
          • 2018-12-09
          • 1970-01-01
          • 2011-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-04
          • 2012-01-17
          • 1970-01-01
          相关资源
          最近更新 更多