更新Google Apps Script侧边栏中的内容而无需重新加载侧边栏
Updating content in a Google Apps Script sidebar without reloading the sidebar
我使用以下Google Apps Script代码在脚本运行时在电子表格的自定义侧边栏中显示内容:
function test() {
var sidebarContent = '1<br>';
updateSidebar(sidebarContent);
sidebarContent += '2<br>';
updateSidebar(sidebarContent);
sidebarContent += '3';
updateSidebar(sidebarContent);
}
function updateSidebar(content) {
var html = HtmlService.createHtmlOutput(content)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Sidebar')
.setWidth(250);
SpreadsheetApp.getUi().showSidebar(html);
}
它可以工作,但是每次updateSidebar()
函数运行时,侧边栏在加载新内容时闪烁。
我如何对其进行编程以更有效地更新侧边栏的内容,从而消除闪烁?
我假设SpreadsheetApp.getUi().showSidebar(html);
应该真的只运行一次,在开始时,随后的内容更新应该由Javascript在.js文件中处理。
但我不知道如何获得sidebarContent
变量从Javascript代码运行在用户的浏览器的客户端。
而且,我知道这一定是可能的,因为我今天刚刚在Google Apps开发者博客上看到了一篇关于一个使用自定义侧边栏的应用程序的文章,文章末尾的。gif显示了一个实时更新的漂亮的动画侧边栏。
我认为这种情况的解决方案是实际处理来自客户端的服务器端脚本流。这是目前我能想到的将数据从服务器传递到客户端而不重新生成HTML的唯一方法。
我的意思是,您希望从客户机调用服务器端函数,并让它们将响应作为成功处理程序返回给客户机。这意味着需要记录日志的每个操作都需要被写入自己的函数中。我给你们举个例子来说明我的意思。假设您的服务器端GAS代码如下所示:
function actionOne(){
...insert code here...
return true;
}
function actionTwo(){
...insert code here...
return true;
}
根据需要执行的操作数目依次类推。
现在,对于你的。html文件,在底部你应该有这样的javascript:
<script>
callActionOne();
function callActionOne(){
google.script.run.withSuccessHandler(callActionTwo).actionOne();
}
function callActionTwo(){
...update html as necessary to indicate that the first action has completed...
google.script.run.withSuccessHandler(actionsComplete).actionTwo();
}
function actionsComplete(){
..update html to indicate script is complete...
}
</script>
这比理想情况要复杂一些,您可能需要使用CacheService在操作之间存储一些数据,但它应该可以帮助您解决问题。如果您有任何问题或不符合您的需要,请告诉我。
相关文章:
- 当侧边栏很长时,滚动/固定侧边栏会被切断
- 创建带有侧边栏的谷歌地图
- 如何在显示侧边栏时禁用背景,单击除侧边栏之外的任何位置都会关闭侧边栏
- 在页脚处停止固定侧边栏-防止重叠
- 如何将javascript添加到Wordpress侧边栏中
- 如何正确地将数据发送到打开的Firefox侧边栏
- 如何制作侧边栏以增加其完整长度
- 固定位置侧边栏不滚动-设置内容的高度
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 有没有办法在 Firefox 侧边栏中加载页面时应用不同的 CSS
- 如何使侧边栏隐藏时,页面加载在引导
- 如何在Laravel中使我的侧边栏导航子菜单在新的HTTP请求中保持展开和活跃?
- 谷歌地图按标记类别加载侧边栏
- 更新Google Apps Script侧边栏中的内容而无需重新加载侧边栏
- 重新加载Chrome DevTools扩展侧边栏在页面更改
- Google 表格中的侧边栏功能:单击按钮可在侧边栏中打开新的“页面”
- 如何将子资源的新路由呈现到应用程序侧边栏出口中?
- XUL-在主浏览器窗口中加载新页面的侧边栏按钮
- 从firefox侧边栏监视所选选项卡中的页面加载事件