1

GAS が必要な順序で関数を実行するのに問題があります。このコードでは:

function documentUpload(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('documentValue').setText('Uploaded');
  app.getElementById('documentValueLabel').setStyleAttribute('color', 'black');
  checkSubmit(e);
  return app;
}

...テキストを変更する前に常にcheckSubmitを実行します。checkSubmit がチェックすることの 1 つは、documentValue にテキストがあるかどうかであるため、これは役に立ちません。

この投稿を見て 、次のように LockService を追加しようとしました:

function documentUpload(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('documentValue').setText('Uploaded');
  app.getElementById('documentValueLabel').setStyleAttribute('color', 'black');
  var lock = LockService.getPrivateLock();
  lock.waitLock(10000);
  checkSubmit(e);
  lock.releaseLock();
  return app;
}

...しかし、私は異なる結果を得ていません。Utilities.sleep() についても同じです。

提案をお寄せいただきありがとうございます!

4

1 に答える 1

0

appを返すと UI が更新されます。つまり、関数内からの関数呼び出しは、同じ関数内から UI に加えた変更を認識できません。

つまり、コードを 2 つの関数に分割して、コンテンツを読み取る関数を呼び出す前に、アプリを返す (つまり、UI を更新する) ことができるようにする必要があります。


編集:あなたのコードを見ると、ダウンロードを開始する前にやりたいことは、テキスト値とスタイル属性を変更することだけのようです...もしそうなら、すぐに実行される clientHandler を使用できます(this other を参照)最近の投稿) これで問題が解決する可能性があります...解決した場合はお知らせください。

于 2013-10-03T19:52:23.760 に答える