gpt4 book ai didi

javascript - 为什么我的 Google 表格功能这么慢?

转载 作者:行者123 更新时间:2023-12-01 00:51:43 24 4
gpt4 key购买 nike

我喜欢函数 IFNA( expression, value_if_NA ) 的形式来检查条件,而无需计算两次。

所以,我想我应该编写我认为缺少的函数,IFZERO( expression, value_if_zero )。我的函数可以工作,但它似乎特别慢,有时会死锁(在一小部分单元格中显示“正在加载...”)。

function IFZERO( expression, valueIfZero )
{
var result = eval( expression );
if ( result === 0 )
return valueIfZero;
return result;
}

我的用法是在一列具有此类公式的单元格中:

=IFZERO( E70 - SUMIF( A:A, A70, G:G ), "" )

结果:单元格显示“正在加载...”,执行一个单元格大约需要 500 毫秒。

我的工作表中只有大约 80 行,尽管 A、G 等中的值是从其他工作表的 FILTER() 结果中提取的,但等效的(但不太漂亮)

=IF( E70 - SUMIF( A:A, A70, G:G ) = 0, "", E70 - SUMIF( A:A, A70, G:G ) )

立即返回。

我的问题是:我的 JavaScript 函数是否错过了某种优化?我想知道是否有一种基于事件的方法可以做同样的事情,而不必在 JavaScript 层中使用 eval()

最佳答案

这个答案怎么样?请将此视为多个答案之一。

修改后的脚本:

我认为在您的自定义函数中,=IFZERO( E70 - SUMIF( A:A, A70, G:G ), "") 给出的表达式有已经计算过了。所以你可以修改如下。

function IFZERO(result, valueIfZero) {
return result === 0 ? valueIfZero : result
}
  • 通过此修改,不需要使用 eval()
  • 您还可以将此修改后的脚本用作 =IFZERO( E70 - SUMIF( A:A, A70, G:G ), "")

关于javascript - 为什么我的 Google 表格功能这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com