【问题标题】:Simple popup or dialog box in Google Apps ScriptGoogle Apps 脚本中的简单弹出窗口或对话框
【发布时间】:2012-08-22 00:15:52
【问题描述】:

我正在寻找在我的 Google Apps 脚本 Ui 中添加一个弹出窗口的简单代码,当我点击提交按钮时会出现该弹出窗口。弹出框会显示一条消息,并有一个关闭弹出框的按钮。

我已经到处看了 - 一切似乎都很复杂,而且做得比我需要做的要多。

这是提交按钮的当前代码。

     function doGet() {
       var app = UiApp.createApplication();
       app.setTitle("My Logbook");

       var hPanel_01 = app.createHorizontalPanel();
       var vPanel_01 = app.createVerticalPanel();
       var vPanel_02 = app.createVerticalPanel();
       var vPanel_03 = app.createVerticalPanel();

       var submitButton = app.createButton("Submit");

       //Create click handler
       var clickHandler = app.createServerHandler("submitData");
       submitButton.addClickHandler(clickHandler);
       clickHandler.addCallbackElement(hPanel_01);


       ////Test PopUp Panel
       var app = UiApp.getActiveApplication();
       var app = UiApp.createApplication;
       var dialog = app.createDialogBox();
       var closeHandler = app.createClientHandler().forTargets(dialog).setVisible(false);
       submitButton.addClickHandler(closeHandler);

       var button= app.createButton('Close').addClickHandler(closeHandler);

       dialog.add(button);
       app.add(dialog);
       //////



       return app;
     }

【问题讨论】:

    标签: popup google-apps-script popupwindow


    【解决方案1】:

    由于UiApp 已被贬值,HTMLService 应用于创建自定义用户界面。

    要提示简单的弹出窗口显示消息,请使用Ui classalert 方法

    var ui = DocumentApp.getUi();
    ui.alert('Hello world');
    

    将提示带有 hello world 和 ok 按钮的简单弹出窗口。

    要在Dialog中显示自定义的html模板,使用HTMLService创建模板,然后传递给Ui类的showModalDialog方法

    var html = HtmlService.createHtmlOutput("<div>Hello world</div>").setSandboxMode(HtmlService.SandboxMode.IFRAME);
    DocumentApp.getUi().showModalDialog(html, "My Dialog");
    

    HtmlService.createHtmlOutputFromFile 允许您显示位于单独文件中的 html。见documentation

    【讨论】:

    • 这就是我正在寻找的简单消息框的简单单/两行代码。 JUST alert("msg"); 到底怎么了?为什么 GOOGLE 过于复杂?
    【解决方案2】:

    您是否尝试过使用 zIndex?它将面板置于所有其他面板之上...

    var popupPanel = app.createVerticalPanel().setId('popupPanel')
        .setVisible(false)      
        .setStyleAttribute('left', x)  
        .setStyleAttribute('top', y)        
        .setStyleAttribute('zIndex', '1')
        .setStyleAttribute('position', 'fixed');
    

    x = 应用左侧的面板位置 y = 应用顶部的面板位置 zIndex = 您的面板将出现的“层”。您可以使用“1”、“2”、“3”等来堆叠面板。 position = 您的面板将处于由 (x,y) 表示的固定位置

    Visibility 设置为 false,直到您单击提交,然后让您的提交按钮的客户端处理程序使 popupPanel 可见。当您单击 popupPanel 上的按钮时,让客户端处理程序再次将可见性设置为 false,它将消失。

    还有一件事,我注意到您获得了活动应用,然后创建了一个新应用。您无需创建新应用...只需在应用内创建新面板即可。

    希望这会有所帮助!

    【讨论】:

    • 谢谢特雷弗!我不知道。
    • 没有问题...我经常使用它在某些应用程序中拥有多个分层面板。它可能非常有效。
    【解决方案3】:

    您可以使用对话框弹出。 在对话框中添加一个按钮。添加一个客户端处理程序,在您单击按钮后将对话框设置为不可见。

    var app = UiApp.createApplication;
    var dialog = app.createDialogBox();
    var closeHandler = app.createClientHandler().forTargets(dialog).setVisible(false);
    
    var button= app.createButton('Close').addClickHandler(closeHandler);
    
    dialog.add(button);
    app.add(dialog);
    

    这应该会有所帮助。

    编辑

    在 .createClientHandler 之后添加了“()”。这应该消除与 TypeError: Cannot find function createDialogBox in object function createApplication() {/* */}

    相关的问题

    【讨论】:

    • 如果我已经有 var app = UiApp.createApplication;在我的脚本中我是否为对话框添加另一个?
    • 如何将它连接到我的提交按钮,以便在单击提交按钮时它变得可见?
    • 如果你已经有 var app,那么使用 var app = UiApp.getActiveApplication();对于提交按钮,只需添加 submitButton.addClickHandler(closeHandler);
    • 不确定我做错了什么-我收到错误:TypeError: Cannot find function createDialogBox in object function createApplication() {/* */} 。我已经更新了上面的代码...我省略了添加面板和提交按钮到应用程序的代码,只是为了简化这里。
    • 我不知道你为什么要'//Testpopup ....'之后的两行注释?并更正 var closeHandler = app.createClientHandler.forTargets(dialog).setVisible(false);通过在 .createClientHandler 之后添加 ()
    【解决方案4】:

    Popup - 使用类似这样的东西:

          var table = app.createFlexTable();
          table.setStyleAttribute("position", "absolute");
          table.setStyleAttribute("background", "white");      
    

    将项目添加到表格并根据需要隐藏和显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多