Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用程序脚本UiApp当按下按钮时更改它';在处理脚本之前,是什么颜色?_Google Apps Script - Fatal编程技术网

Google apps script 谷歌应用程序脚本UiApp当按下按钮时更改它';在处理脚本之前,是什么颜色?

Google apps script 谷歌应用程序脚本UiApp当按下按钮时更改它';在处理脚本之前,是什么颜色?,google-apps-script,Google Apps Script,我想脚本时,按钮被按下立即改变其颜色,但实际上它的改变它的颜色后,脚本的copyProject完成,copyProject功能需要约40秒 在运行copyProject函数之前,我曾想过拆分处理程序函数,使其在印刷机上更改颜色,有什么想法吗 function copyProject(e) { var app=UiApp.getActiveApplication(); var button=app.getElementById("button"); process

我想脚本时,按钮被按下立即改变其颜色,但实际上它的改变它的颜色后,脚本的copyProject完成,copyProject功能需要约40秒

在运行copyProject函数之前,我曾想过拆分处理程序函数,使其在印刷机上更改颜色,有什么想法吗

 function copyProject(e)
 {
     var app=UiApp.getActiveApplication();
     var button=app.getElementById("button");
     process(app,button);
     var sourceProjectID=e.parameter.id;
     copProject(sourceProjectID);
     return app.close();
 }


 function process(app,button)
 { 
     button.setStyleAttribute("color", "red").setText("Processing");
     return app;  
 }

感谢

处理在服务器上进行,因此它只会在处理完成后重新绘制应用程序,您的UI将不会响应

使用UI并使其响应的正确方法是使用客户端处理程序,它使您能够动态更新UI。还要研究验证器,它有助于在处理输入之前验证输入,而无需进入服务器


如果我能进一步帮助您,请告诉我。

以下是一个示例,显示一个按钮上的客户端服务器和服务器处理程序,模拟您想要的行为:当您单击按钮时,该按钮会改变颜色。。。在长serverHandler函数之后,它显示一条消息

function doGet(){
  var app = UiApp.createApplication();
  var handler = app.createServerHandler('test');
  var cHandler = app.createClientHandler();
  var btn = app.createButton('click this button').addClickHandler(handler).addClickHandler(cHandler);
  cHandler.forEventSource().setStyleAttributes({'color':'red'})
  app.add(btn);
  return app
}

function test(e){
  var app = UiApp.getActiveApplication();
  app.add(app.createLabel('operation completed'));
  Utilities.sleep(4000);
  return app;
}

现场测试

良好的开端,但这些功能中的大多数现在已被弃用(2017年底)