2012-07-04 75 views
0

我有一個簡單的應用程序,用戶按下按鈕並顯示歡迎消息。我需要這個消息(標籤)在幾秒鐘後隱藏,比如說5秒。 我在google apps腳本中找不到像setTimeout()這樣的函數。如何使用Google應用程序腳本在幾秒鐘後隱藏標籤?

有人可以提供一個想法我可以如何實現這一點?

(正如你所看到的,不是一個有經驗的程序員)。

謝謝!

+0

請參閱此帖以獲得更好的解決方案:http://stackoverflow.com/questions/21483652/automatically-close-a-google- apps-script-uiapp-five-seconds –

回答

3

一個可能的解決方案。邏輯是有兩個按鈕點擊處理程序。第一個讓標籤可見,第二個5秒後隱藏標籤。

function doGet(e) { 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 
    var btn = app.createButton().setText('Test'); 
    var lblVisible = app.createLabel('Visible Test').setVisible(false).setId('lblVisible'); 
    panel.add(btn); 
    panel.add(lblVisible); 
    var handler = app.createServerHandler('onBtnClick'); 
    var handlerWait = app.createServerHandler('onWaitEvent'); 
    handler.addCallbackElement(panel); 
    handlerWait.addCallbackElement(panel); 
    btn.addClickHandler(handler); 
    btn.addClickHandler(handlerWait); 
    app.add(panel); 
    return app; 
} 

function onWaitEvent(e) { 
    Utilities.sleep(5 * 1000); 
    var app = UiApp.getActiveApplication(); 
    var lblVisible = app.getElementById('lblVisible'); 
    lblVisible.setVisible(false); 
    return app; 
} 

function onBtnClick(e) { 
    var app = UiApp.getActiveApplication(); 
    var lblVisible = app.getElementById('lblVisible'); 
    lblVisible.setVisible(true); 
    return app; 
} 
+0

謝謝Megabyte1024。很有用!!!! –

+0

@ Megabyte1024你爲什麼要在兩個處理函數中使用app.close()?這是沒有道理的......你不應該關閉應用程序,當你設置可見標籤(函數(onCloseClick())你提供的代碼根本無法正常工作,它從不顯示測試標籤;-) –

+0

@Serge insas:更正了代碼。代碼幾乎完全取自我以前的代碼,我曾經玩過[這個問題](http://stackoverflow.com/questions/11314772/google-script-how-to-close-an-ui-from-the -server -handler-while-another-functio) – megabyte1024

1

進度指示器解決方案等,這個工程。它可以讓你連鎖事件,我已經多次使用它。

在旅途中更新窗口小部件值。 productforums.google.com/d/topic/apps-script/lABoP-cJcGQ/...