如何从谷歌应用程序脚本传回自定义错误消息?

时间:2013-06-18 22:34:44

标签: google-apps-script google-sheets

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

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

3 个答案:

答案 0 :(得分:25)

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

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

正在使用numerous examples,即使这些问题不完全属于您。

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

答案 1 :(得分:2)

以下是将脚本中的数据传递到错误消息的最佳方法。首先设置一个全局变量对象来存储错误处理所需的数据。然后在每个函数的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); 
}

答案 2 :(得分:-1)

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

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

干杯

尼古拉斯