从谷歌电子表格运行谷歌应用程序脚本时,如果其中一个谷歌api使用不正确,电子表格顶部会显示一个红色的“butterbar”错误。此消息通常包含对脚本开发人员有用的信息(来自google api的错误消息,例如“范围的坐标或维度无效。”)但不一定是电子表格用户(他们的真实世界翻译)可以做到解决它。)
我搜索了UiApp api documentation,但没有看到自定义此消息的方法。是否可以抛出您自己的错误消息?
答案 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结构,它也可以工作。
干杯
尼古拉斯