7

送信ボタンを押すと表示されるGoogleAppsScriptUiにポップアップを追加する簡単なコードを探しています。ポップアップボックスにはメッセージが表示され、ポップアップを閉じるためのボタンがあります。

私はあちこちを見てきました-すべてがとても複雑に見え、私が必要とする以上のことをします。

これは、送信ボタン用に現在持っているコードです。

     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;
     }
4

4 に答える 4

7

UiAppは減価償却されているため、HTMLServiceを使用してカスタム ユーザー インターフェイスを作成する必要があります

シンプルなポップアップでメッセージを表示するには、 Ui クラスalertのメソッドを使用します。

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

hello world と [ok] ボタンを含む単純なポップアップが表示されます。

カスタマイズした html テンプレートを Dialog に表示するには、HTMLService を使用してテンプレートを作成し、それをshowModalDialogUi クラスのメソッドに渡します。

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

HtmlService.createHtmlOutputFromFile別のファイルにある html を表示できます。ドキュメントを参照してください

于 2015-09-16T13:53:57.817 に答える
2

ダイアログボックスを使用してポップアップできます。ダイアログ ボックスにボタンを追加します。ボタンをクリックすると、ダイアログ ボックスが非表示になるように設定するクライアント ハンドラを追加します。

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() {/* */}に関連する問題を取り除く必要 があります。

于 2012-08-22T07:43:02.377 に答える
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) で示される固定位置になります。

送信をクリックするまで可視性は false に設定され、送信ボタンのクライアント ハンドラーで popupPanel が表示されるようにします。popupPanel のボタンをクリックすると、クライアント ハンドラーで可視性をもう一度 false に設定すると、ボタンが消えます。

もう 1 つ、アクティブなアプリを取得してから、新しいアプリを作成していることに気付きました。新しいアプリを作成する必要はありません...アプリ内の新しいパネルだけです。

お役に立てれば!

于 2013-01-21T03:30:54.130 に答える
0

ポップアップ - 次のようなものを使用します。

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

テーブルに項目を追加し、必要に応じて表示と非表示を切り替えます。

于 2012-08-22T03:42:03.420 に答える