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またはHTML5でできること。

ありがとう

4

3 に答える 3

1

このためにHtmlServicesを使用してみませんか。試してみてください: ここをクリック

jqueryを使用してこれを実装できます。

于 2012-12-19T04:50:03.390 に答える
0

いいえ、AppsScriptでプログレスバーを実行する実際の方法はありません。

ただし、いくつかの回避策があります。同じボタンに複数のハンドラーを追加でき、それぞれのハンドラーで、スリープ時間が異なるため、GUIを何度も更新できます。または、ほとんどの場合と同様に、クライアントハンドラーで無限の進行状況gifアニメーションを表示し(インスタントフィードバック用)、2番目のハンドラーが終了した後、実際に作業を行うServerHandlerで、画像を非表示にして結果を返します。

于 2012-05-19T02:57:56.157 に答える
0

更新された回答:サーバー側で実行されているスクリプトのステータスを取得するには、進行状況をキャッシュに保存する必要があります。次に、クライアント側はサーバー側の関数を呼び出してそれを取得できます。https://developers.google.com/apps-script/reference/cache/cache-service

于 2018-06-01T13:52:52.993 に答える