2

我正在尝试在 Google app scripting 中创建一个进度条,当有人点击一个按钮(Go)时,它会自动慢慢地从开始到结束。您在 Firefox 下载窗口中看到的内容。这是我的代码。

function doGet(e) {
  var app = UiApp.createApplication();
  var progressPanel = app.loadComponent("progressbar_auto");
  var gobutton =app.getElementById("go_btn");

  var go_btn_handler =app.createServerHandler("updateProgressbar");
  go_btn_handler.addCallbackElement(gobutton);
  gobutton.addClickHandler(go_btn_handler)


  app.add(progressPanel);
  return app;
}
//function time(i){
//    Utilities.sleep(5);
//  }
function updateProgressbar(){
  var app = UiApp.getActiveApplication()

  for(var i =1 ; i < 250 ; i++ ){

    app.getElementById("progress").setWidth(i + 'px');
    time();
  }
 Logger.log(i);
  return app;

}

但是根据这段代码for循环会执行非常快&,进度条完成非常快。有什么办法可以减缓这种情况。

你可以在这里找到我的应用程序。

https://sites.google.com/a/macros/dewdynamics.net/exec?service=AKfycbztKB_ljMBGi_55RrK_DH3x_pRZQ993bDoAHSsxDA

有什么办法可以添加一个滑动条来控制进度条。我们可以在 php 或 HTML 5 中做一些事情。

谢谢

4

3 回答 3

1

你为什么不为此使用 HtmlServices。试试看: 点击这里

您可以使用 jquery 来实现这一点。

于 2012-12-19T04:50:03.390 回答
0

不,没有真正的方法可以在 Apps 脚本上制作进度条。

不过有一些解决方法。您可以将多个处理程序添加到同一个按钮,并且在每个处理程序中,使用不同的睡眠时间,您可以多次更新 GUI。或者,像大多数人一样,在客户端处理程序中显示无尽的进度 gif 动画(用于即时反馈),在您的第二个处理程序完成后,您实际执行工作的 ServerHandler 隐藏图像并返回结果。

于 2012-05-19T02:57:56.157 回答
0

更新答案:要获取运行服务器端的脚本的状态,您需要将进度存储到缓存中。然后客户端可以调用服务器端函数来检索它。https://developers.google.com/apps-script/reference/cache/cache-service

于 2018-06-01T13:52:52.993 回答