2012-11-30 49 views
0

我已經使用Google Apps腳本創建了一個簡單的Web應用程序。用戶界面只是簡單地顯示了一些數據在FusionTable中不斷更新。自定義數據採集系統在我家中本地運行,並每分鐘發送一次新的結果到FusionTable。我希望以一分鐘的時間間隔更新我的GAS webapp上的UI,以便顯示新的數字。自動刷新Google Apps腳本的Web應用程序用戶界面?

我有一半的問題通過運行時間驅動程序觸發器來週期性地從FusionTable中獲取數據並將其存儲在腳本自己的ScriptDb中。所以這工作得很好,讓我的數據在正確的鄰里。但我仍然沒有看到如何定期更新我的UI中的文本框與新的數據。

到目前爲止,我已經在用戶界面上手動配置了一個刷新按鈕,用戶可以單擊以更新存儲在ScriptDb中的最新號碼的顯示。我很親密,我可以品嚐它!

任何人有想法嗎?

回答

5

您可以使用UiInstance.addTimer方法進行自動刷新,但它沒有記錄,也許不支持。

其語法UiInstance.addTimer(ServerHandler , interval);

請參見下面的示例代碼。

function doGet(e) { 

  var app = UiApp.createApplication(); 

   

  app.add(app.createLabel(new Date()).setId("label")); 

   

  app.addTimer(app.createServerHandler("update") , 1000); 

   

  return app; 

} 



function update(e){ 

  var app = UiApp.getActiveApplication(); 

  app.getElementById("label").setText(new Date()); 

  app.addTimer(app.createServerHandler("update") , 1000); 


  return app; 

} 

可以找到一個示例應用程序here

+0

不錯。謝謝你的提示。我會給它一個鏡頭。 – Who8MyLunch

+0

好的,這很容易實現。起初,我在兩個函數doGet()和update()中使用addTimer()時感到困惑。看起來這裏創建的定時器事件是一次性的,因此需要在update()函數中調用它。這確保了連續的事件。在我的實現中,我沒有從doGet()中調用addTimer()。相反,我只需從doGet()調用update(),這足以讓球滾動。非常感謝這個想法。 – Who8MyLunch

+0

如果應用程序的創建處於全局範圍內,則使用計時器會導致「意外退出」。沒有計時器,這根本不是一個問題,而且很有用 – SoftwareTester

1

不幸的是,Google Apps腳本還沒有定時器工具來頻繁更新UI。然而,有一個我後來寫了一個黑客,並在舊的Apps腳本論壇可用 http://productforums.google.com/forum/#!topic/apps-script/2pqhh_eTIvQ

有改進,你可以在stackoverflow中搜索,利用這個事實,您可以編程方式更改複選框的值並觸發其更改處理程序。

+0

謝謝你!我今天會看看。 – Who8MyLunch

2

使用電子表格進行顯示。他們自動更新。

#1,這不是感謝,但解決方案,但你:

  1. 製作電子表格
  2. 張貼
  3. 有服務更新電子表格
  4. 手錶的電子表格
  5. 添加服務
相關問題