【问题标题】:Improve my script run time提高我的脚本运行时间
【发布时间】:2012-06-30 05:35:39
【问题描述】:

有没有办法改善我的脚本运行时间?我有一个创建 2 个列表框的脚本:Listbox1 项目是我所有的谷歌网站页面,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;
}  

【问题讨论】:

    标签: google-apps-script google-sites


    【解决方案1】:

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

    查看您的页面,我发现 listBox 2 从未被清除...这是临时问题吗?你最近有什么改变吗?

    另外,当在 listBox2 中选择某些东西时应该发生什么?

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

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

    【讨论】:

    • 嗨,Serge,感谢您的建议。我使用了 2 个处理程序,因为当 listbox1 中的更改需要 1-3 秒(有时 5 秒)时,人们会认为 listbox2(尚未更新)项目是所有子页面。而且我认为使用 onclick 处理程序不会增加运行时间。因为当您单击 listbox1 时,您必须花时间挑选一个项目。这就是我在 onchange 函数中删除 lbox2.clear() 的原因。
    猜你喜欢
    • 2016-01-18
    • 2023-04-02
    • 2019-02-12
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2020-07-07
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多