在将UiApp作为已发布服务调用后无法关闭它

时间:2012-06-14 19:47:54

标签: google-apps-script

我的脚本上有已发布的服务,我将其传递给电子邮件的链接。一旦活动帐户调用该服务,UiApp就会打开以进行进一步处理。我使用doGet()来做到这一点。完成UiApp上的处理后,我有一个Submit按钮,链接到服务器点击处理程序,该处理程序应该处理通过UiApp表单进行的更改。虽然我可以使用此UiApp更改电子表格中我希望更改的值,但在单击“提交”按钮时仍遇到两个问题:

  1. 按下提交按钮
  2. 时,Ui App不会关闭
  3. 我无法调用浏览器msgBox来提供进程完整的验证消息。
  4. 我已经阅读了很多内容,关闭并返回应用程序,UiApp应该关闭,但它没有发生,我假设这是因为只有在没有涉及serverClickHandler时才会发生这种情况。我错了。

    有人可以帮助我解决问题1并解决问题2吗?我的doGet和clickHandler函数的相关版本附在下面。

    function doGet(e) //On invoking service in the mail.
    {
      //Adding all other elements of the UiApp here
      /* …
         …  All other elements of the UiApp
         …
    */
      //Adding Submit button to the UiApp
      var button = app.createButton('Submit');
      var handler = app.createServerClickHandler('click').addCallbackElement(panel);
      button.addClickHandler(handler);
      panel.add(button);
      app.add(panel);
      return app;
    }
    
     function click(eventInfo) {
       var app = UiApp.getActiveApplication();
     //Processing the actions that have to be performed on hitting the submit button
    /* …
       … Processing the actions that have to be performed on hitting the submit button
       …
    */
       app.close();
       return app;
     }
    

1 个答案:

答案 0 :(得分:2)

Browser.messageBox在已发布的U​​iApps中不可用,您应该使用一个不可见的标签,直到您在流程结束时将其显示为止。 另一个问题也不是问题:UiApp无法关闭浏览器窗口,只能让UI的主面板不可见。

结合这两项修改将允许您隐藏表单并将其替换为“已完成,感谢提交”消息。