有没有办法在执行过程中停止自动运行的脚本?

时间:2019-02-11 02:53:30

标签: google-apps-script

首先,我是木匠,而不是开发人员。

我正在使用Google表单来自动进行求职估算。我有一个脚本,用于格式化pdf格式的答案,以便可以将其发送给我的主要客户以供批准。 masterFunction()由表单提交触发。我编写的脚本可能不是正确的方法,但如下所示;

function masterFunction() {
    aFunction();
    bFunction();
    cFunction();
    ...
};

function a(){
   ...
};

function b(){
   ... 
};       
...

如果脚本在任何子功能中遇到错误,我希望将之前的工作保存到另一个文件中并进行清理,以便可以运行下一个表单响应。之后,我可以返回并更正问题,然后运行脚本的其余部分。

我已经在代码中放置了捕获这些错误的位置,例如空白字段或空值,或者我未正确输入表单中的内容(但不是脚本错误,我不关心这些错误),这会向我发送有关这些问题的电子邮件警报,但其他人可能会将这些pdf发送给客户却看不到问题。

有没有一种方法可以停止masterFunction()。我发现的大多数内容都会停止子功能,例如break或try,但是只会将其发送回master函数,而master函数会继续并将其发送到下一个函数并运行到最后。

1 个答案:

答案 0 :(得分:1)

一种选择是使用“ return”语句,该语句允许您从函数中返回值。调用return时,该函数立即结束,并可以选择将值传递回父级,您可以检查该值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

修改您的子函数以使用'return'语句,并在成功时返回'true'值,在失败时返回'false',然后检查每个结果:

功能:

return false;

在母版中:

var a_result = aFunction();
if(!a_result){
    /*... optionally do "failed" tasks here ..*/
    return  //exit master function
}

另一种选择是“引发”异常,然后可以在主函数中“捕获”异常。如果您不关心哪个子功能失败,则引发异常可能会更好。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw

在儿童中:

throw "missing name!"

在母版中:

   function masterFunction(){
    try{
       aFunction();
       bFunction();
       ...
    }catch(e){
        logger.log('Caught error '+e);
    }
   }