侧栏加载项的显示–有什么办法能让它更快?

我有一个侧栏附加组件在一个谷歌表上,显示时间相当慢(从触发侧栏显示到刷新大约7秒。

我试过用下面一个非常简单的服务器端脚本函数(只是返回一个虚值),它仍然需要同样的时间来显示(所以问题不在于服务器端函数的复杂性)。

有什么办法可以加快它的速度吗?

code.gs

function onOpen(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "Show sidebar", functionName: "showSidebar"}]; 
  ss.addMenu("TestMenu", menuEntries);
}


function getDataDummy() {
  return {data: "foo"};
}

function showSidebar() {
  var ui = HtmlService.createTemplateFromFile('TestSidebar')
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setTitle("Title");
  SpreadsheetApp.getUi().showSidebar(ui);
}

TestSidebar.html

<div class="sidebar branding-below">
  <p>
  Test
  </p>
  <div class="block div-table" id="sidebar-record-block">
  <div id="field-data" class="div-table-row"><div class="div-table-td"><input type=text id="data" /></div></div>  
  </div>
  <div class="block" id="sidebar-button-bar">
  </div>
  <div id="sidebar-status"></div>
</div>

<?!= HtmlService.createHtmlOutputFromFile('TestSidebar.javascript').getContent(); ?>

TestSidebar.javascript

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
  $(function() {
    google.script.run.withSuccessHandler(showData).getDataDummy();
  });

  function showData(record) {
    if (record && record["data"]) {
      $("#data").val(record["data"]);
    }
  }
</script>

这段代码对工作表本身没有任何作用,但从点击菜单到显示数据,需要7s。

解决方案:

试试这个。

function getDataDummy() {
  return {data: "foo"};
}

function showSidebar() {
  var html='<html><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script></head>';
  html+='<body><div class="sidebar branding-below"><p>Test</p><div class="block div-table" id="sidebar-record-block">';
  html+='<div id="field-data" class="div-table-row"><div class="div-table-td"><input type=text id="data" /></div></div>';
  html+='</div><div class="block" id="sidebar-button-bar"></div><div id="sidebar-status"></div></div>';
  html+='<script>$(function(){google.script.run.withSuccessHandler(showData).getDataDummy();});function showData(record) {if(record && record["data"]){$("#data").val(record["data"]);}}</script>';
  SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutput(html).setTitle('No Title'));
}

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Socket.io的连接太多

2022-4-22 11:09:02

解决方案

为什么在构造函数中初始化的成员变量会在离子角的ngInit中未定义?

2022-4-22 12:08:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索