【问题标题】:Improve response speed Google sheet script提高响应速度谷歌工作表脚本
【发布时间】:2019-05-27 02:25:42
【问题描述】:

我写了一个表格供用户输入。我使用代码引导他们完成表单。例如,进入 Cell A4 后跳转到 D4,在 D4 之后跳转到 A5 等。即使执行时间(从执行记录中查看)并不大(大部分时间接近 0.1 秒)谷歌表响应时间一般为1秒左右。感觉很拖沓。有没有办法提高这个动作的谷歌表的响应能力?

【问题讨论】:

  • 如果你可以reduce the calls to the sheet(即那些Range.getA1Notation()s),那将有所帮助。另外,please don't post pictures of code/errors 并尝试包含您的相关代码示例,以便人们更好地了解您可能遇到的问题。
  • @Altigraph 如您所见,Range.getA1Noation()4 次操作花费不到 1 毫秒。同时,响应时间约为 1 秒。这可能在优化优先级列表中应该很低。我的问题是脚本时间和响应时间之间的差异,而不是代码本身。
  • 我正在评论改进可以改进的服务器端代码,因为这就是 Google Apps 脚本。如果您想要一个响应速度更快的客户端,您需要使用其他东西来代替/除了 GAS;例如如下所示的侧边栏,其他一些将您的 Apps 脚本调用为 web app 的客户端 UI,等等。

标签: performance google-apps-script google-sheets triggers responsiveness


【解决方案1】:

除了执行某个方法的时间之外,您还应该考虑“传输时间”(Google 服务器和用户设备之间的通信)、电子表格重新计算时间和 UI 刷新时间。

为了提高表单用户获得更好体验的机会,

  • 避免或减少使用公式
  • 避免或减少使用 NOW() 等易失函数
  • 避免或减少使用 A:A 等开放引用
  • 减少计算依赖链的长度

还要求表单用户

  • 删除所有网络浏览器扩展
  • 关闭所有其他网络浏览器标签
  • 关闭所有其他本地应用程序
  • 使用非常快的互联网连接

进一步阅读

【讨论】:

  • 有没有办法测量“传输时间”、电子表格重新计算时间和 UI 刷新时间?
  • Bruce McPherson (ramblings.mcpher.com) 在他的网站上有一篇包含代码的帖子(也许那篇文章没有涵盖所有内容,但这是一个非常好的开始)。
  • 很棒的资源,我希望我早点知道。找不到您指向的部分。
【解决方案2】:

使用 Apps 脚本尝试在电子表格中移动用户可能不会让您感到舒服。

相反,请参阅guide on dialogs and sidebars,并考虑使用 HTML/Javascript 构建表单是否是更合适的解决方案(假设简单地构建 Google 表单不是)。

【讨论】:

  • 我正在构建一个表单,让用户从图像中输入数据。在他们处理完一张图片后,表格会清空,获取下一张要处理的图片。使用 Google 表单可以做到这一点吗?
  • 为了确保我理解你想要的:页面上加载了一张图片,用户从该图片的内容中输入了一些数据,提交他们的输入,表单清除,一个新的图像是加载,并且用户重复此过程?我没有对 Google 表单做太多的工作来了解他们的平台是否可行,但使用侧边栏绝对是可能的(如果您希望他们在使用表)或将谷歌应用程序脚本部署为网络应用程序。
  • 例如,一个简单的 HTML 页面,其中包含您的图像和要提交的表单。还可以预先获取下一张图片,以便在提交后立即出现,无需等待服务器的响应。
  • 您所说的“预取”是在 Google 脚本/表格还是 HTML 页面中?
  • 可能两者都有,这取决于您构建它的方式以及从哪里获取这些图像(即通过 DriveApp 或其他服务驱动)。例如,在页面加载时加载两个图像,显示第一个。当第一个提交时,客户端切换到第二个图像并开始收集第三个,或者您发现它效果最好(提前加载更多或更少的图像,分批工作等)
猜你喜欢
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多