首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有慢自定义功能的Google脚本性能

带有慢自定义功能的Google脚本性能
EN

Stack Overflow用户
提问于 2019-02-11 03:20:28
回答 2查看 1.8K关注 0票数 0

安装程序:我有一个Google表,我想在其中运行一个使用脚本实现的自定义函数。此脚本用于执行相对较长的URL查找和解码过程(每次调用10 ms,取决于带宽和ping)。自定义函数使用一个列作为输入,并返回结果。

问题:当我的Google工作表打开时,使用此计算的列将被刷新。这会使Google工作表暂停大约10秒,直到重新计算列中的每个单元格为止。当我将其添加到电子表格中时,情况只会变得更糟。

问题:是否可以更改函数脚本,或者更改Google中的设置,以便只在更改输入单元格时计算缓慢的自定义函数?

对于任何好奇的人,这是我的问题的演示表

EN

回答 2

Stack Overflow用户

发布于 2019-05-02 01:52:55

在我对在google中,我可以在自定义函数中包装一个标准函数来控制它何时运行吗?的回答中,我分享了这样的想法:在重新计算“昂贵的公式”时,有两个名为“冻结”/“解冻”的按钮来控制。

在这种情况下,您可以在关闭电子表格之前用自定义函数“冻结”范围,以便下次打开它时会打开得更快,然后当您需要更新冻结的范围时,就会“解冻”它。

在发布了最初的版本后,OP要求提供一个简单的版本,但是由于我最初的实现是一些快速而肮脏的西班牙语内容,所以我在那里共享了最重要的代码行。核心方法服务是

  • 一个全局变量来存储公式,如果公式总是相同的话。
  • copyTo覆盖公式结果范围,其值仅为la复制粘贴值。
  • clear删除先前粘贴的公式结果
  • setFormula将公式添加回电子表格。

然后,我意识到我可以改进发布的未列出的Google工作表附加项,它使用PropertiesService实现“公式存储”,其中包含添加/删除/列出公式和动态菜单而不是按钮的函数。

要尝试的其他方法是使用时间驱动的触发器来运行,如果您忘记冻结自定义函数结果的范围,就让它在夜间运行。

票数 1
EN

Stack Overflow用户

发布于 2019-11-03 00:46:32

如果有较少的自定义函数,性能会稍微好一些。您可以重写您的函数以接受数组,因此您将只有一个函数,而不是一次运行100个函数。

代码语言:javascript
运行
复制
function mySlowFunction(x) {
  //Utilities.sleep(x*100); //100 ms
  if (x.map) {
    return x.map(function(y) {return mySlowFunction(y) });
  } else {
    return x * 100;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54623539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档