他のスプレッドシートから取得したデータを使用してスプレッドシートを作成するためのスクリプトを呼び出すインターフェイスがあります。ユーザーに視覚的なフィードバックを提供し、スクリプトが実行されていてスタックしていないことを知らせるために、実行時にインターフェイスのラベルを更新する必要があります。インターフェイスに配置したラベルを更新しようとすると、最初は更新されませんが、myFunction() が最後に到達した後に正しく更新されます。つまり、「作成が完了しました」というメッセージは表示されますが、「ファイルを作成しています...」というメッセージは表示されません。また、ボタン buttonCompile が無効になることはないため、 myFunction() の前の命令はまったく実行されないようです。myFunction() の実行が開始される前に、ラベルを更新してボタンを無効にするにはどうすればよいですか? (すでに変数参照を再確認しました)
function doGet() {
var app = UiApp.createApplication();
app.add(app.loadComponent("File creation"));
var buttonCreate = app.getElementById('createBtn');
var handlerCrea = app.createServerHandler('createClickHandler');
buttonCreate.addClickHandler(handlerCreate);
return app;
}
function createClickHandler(e) {
var app = UiApp.getActiveApplication();
var label = app.getElementById('createLbl');
label.setText("Creating file...");
var buttonCompile = app.getElementById('compileBtn');
buttonCompile.setEnabled(false);
myFunction();
label.setText("Creation completed.");
buttonCompile.setEnabled(true);
app.close();
return app;
}