改善我的脚本运行时间

时间:2012-06-30 05:35:40

标签: google-apps-script google-sites

反正有没有改善我的脚本运行时间?我有一个创建2个列表框的脚本:Listbox1项目是我的所有Google网站页面,listbox2项目是listbox1页面的子页面。脚本运行正常,但有时需要2到5秒才能获得所有listbox2个项目。

您可以尝试我的脚本here

这是我的剧本:

function doGet() 
{
  var app = UiApp.createApplication();
  //GUI with 2 listbox
  //Listbox1: onclick > lbox1onclick(e), onchange > lbox1onchange(e)
  app.add(app.loadComponent("MyUrlParser")); 
  var lbox1 = app.getElementById('ListBox1');
  lbox1.addItem(' ');
  var lbox1_Item = SitesApp.getSite('phichdaica').getChildByName('manga').getChildren();
  for(var i = lbox1_Item.length-1; i >= 0; i--)
  {
      lbox1.addItem(lbox1_Item[i].getTitle());
  }
  return app;  

}

function lbox1onclick(e)
{
  var app = UiApp.getActiveApplication();
  var lbox2 = app.getElementById('ListBox2');
  lbox2.clear();
  return app;
}

function lbox1onchange(e)
{
  var app = UiApp.getActiveApplication();
  // var value = e.parameter.lbox1;
  var lbox1value = e.parameter.ListBox1;
  var lbox2 = app.getElementById('ListBox2');


  var lbox2_Item = SitesApp.getSite('phichdaica').getChildByName('manga').getChildByName(lbox1value).getChildren();

  for(var i=lbox2_Item.length-1; i >= 0; i--)
  {
    lbox2.addItem(lbox2_Item[i].getTitle());
  }
  return app;
}  

1 个答案:

答案 0 :(得分:0)

我认为它不会加快进程,但你可以只用一个处理函数来做到这一点:在更改listBox1上,清除listBox 2并立即重新填充它。花费一些时间的是对网站内容的调用,因此差异可能没有意义,但脚本的“逻辑”会得到改善; - )

查看你的页面,我看到listBox 2永远不会被清除......这是一个临时问题吗?你最近有什么改变吗?

此外,在listBox2中选择某些内容时会发生什么?

编辑 :根据您的评论,如果您想改善有关UI“响应能力”的用户体验,最好的方法是使用客户端处理程序来触发可见性例如,“等待消息”(类似于“更新列表”)。我通常使用一个动画的gif,我用客户端处理程序看到它,并在服务器处理程序返回时再次变为不可见(即我在服务器处理程序函数中将其设置为不可见)。

这是working example,只是尝试更改右上角的日期。