【问题标题】:Auto refresh Google Apps Scripts webapp UI?自动刷新 Google Apps 脚本 webapp UI?
【发布时间】:2012-11-30 03:46:28
【问题描述】:

我使用 Google Apps 脚本创建了一个简单的网络应用程序。 UI 仅显示几个在 FusionTable 中持续更新的数字。一个定制的数据采集系统在我家本地运行,每分钟都会将新结果发送到 FusionTable。我希望每隔一分钟更新我的 GAS webapp 上的 UI,以便显示新数字。

通过运行时间驱动触发器定期从 FusionTable 中抓取数据并将数字存储在我的脚本自己的 ScriptDb 中,我解决了一半的问题。因此,这可以很好地将我的数据放在正确的附近。但我仍然看不到如何使用新数据定期更新 UI 中的文本框。

到目前为止,我已经在 UI 上手动配置了一个刷新按钮,用户可以单击该按钮以使用 ScriptDb 中存储的最新数字更新显示。我很近,我可以尝到它!

有人有想法吗?

【问题讨论】:

    标签: javascript web-applications google-apps-script


    【解决方案1】:

    您可以使用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找到一个示例应用程序。

    【讨论】:

    • 不错。谢谢你的提示。我试试看。
    • 好的,这很容易实现。起初我对您在 doGet() 和 update() 两个函数中使用 addTimer() 感到困惑。看起来这里创建的计时器事件是一次性的,因此需要在 update() 函数中调用它。这确保了事件的连续序列。在我的实现中,我没有从 doGet() 调用 addTimer()。相反,我只是从 doGet() 调用 update(),这足以让事情顺利进行。非常感谢您的想法。
    • 如果应用程序的创建操作在全局范围内,则使用计时器会导致“意外错误”。没有计时器,这根本不是问题且有用
    【解决方案2】:

    使用电子表格进行显示。它们会自动更新。

    Stackoverflow,这不是感谢,而是解决方案,而是给你的:

    1. 制作电子表格
    2. 添加发帖服务
    3. 有服务更新电子表格
    4. 观看电子表格

    【讨论】:

      【解决方案3】:

      很遗憾,Google Apps 脚本还没有计时器工具来频繁更新 UI。但是,我不久前写了一个 hack,可以在旧的 Apps 脚本论坛中找到 http://productforums.google.com/forum/#!topic/apps-script/2pqhh_eTIvQ

      您可以在 stackoverflow 中搜索一些改进,但基本前提保持不变,即您可以利用这样一个事实,即您可以以编程方式更改复选框的值并触发其更改处理程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        相关资源
        最近更新 更多