23

从 google 电子表格运行 google 应用程序脚本时,如果不正确使用其中一个 google api,则电子表格顶部会显示红色的“butterbar”错误。此消息通常包含对脚本开发人员有用的信息(来自 google api 的错误消息,例如“范围的坐标或尺寸无效。”)但不一定对电子表格用户有用(他们的真实世界翻译可以解决它)。

我搜索了UiApp api 文档,但没有看到自定义此消息的方法。是否可以抛出自己的错误消息?

4

3 回答 3

40

与任何 javascript 一样,您可以使用:

try {
  ...
}
catch (error) {
  throw new Error( "More meaningful error." );
}

很多这样的例子在使用,即使问题不完全是你的。

我个人的观点是,最好检查函数的输入并在其上抛出错误(如this answer),而不是从服务调用中捕获错误。使用 try..catch 的合适时间是当您没有实用的方法来验证参数时,如在这个答案中。

于 2013-06-19T00:18:36.877 回答
3

这是将数据从脚本传递到错误消息的最佳方法。首先设置一个全局变量对象来存储错误处理所需的数据。然后将数据存储到每个函数try{}部分中的该对象。最后catch(e)调用一个errHandler将传递错误数据对象的函数。请参阅以下代码:code.gs.

var onErrObj = {}
function myFunction(){

 try{
  // function code goes here;
  // add more elements to onErrObj as desired;
 }catch(e){
      onErrObj['data1'] = 'someData';
      onErrObj['data'] = 'some Other Data';
      errHandler(e,'myFunction');
 }

 function errHandler(e,strFunc){
      var message = e.message+'\n in file: '+e.fileName+' on line: '+e.lineNumber;
      var sendto = 'yourname@youremail.com';
      var subject = 'My App encountered an error occured in '+strFunc;
      var errProps = JSON.stringify(this.onError);
      message = subject+'\n'+message+'\n onError: '+errProps;
      GmailApp.sendEmail(sendto, subject, message); 
}
于 2015-09-16T18:48:35.867 回答
-1

如果绑定到电子表格(例如 msgBox()),您可以尝试查看 Base 类,该类使您可以添加警报框或其他对话框以与应用程序的用户进行交互。对于 DocumentApp,使用 Ui 类与其接口进行交互。

我从未尝试过,但如果您使用带有 throw 语句的 try...catch 结构,它也可以工作。

干杯

尼古拉斯

于 2013-06-19T00:14:59.433 回答