gpt4 book ai didi

google-apps-script - 汇总数据的脚本未更新

转载 作者:行者123 更新时间:2023-12-03 21:07:34 34 4
gpt4 key购买 nike

我有一个时间表数据的Google电子表格;它每个月都有一个工作表,每个工作表有很多六个列块,每个客户一个块。

我创建了一个摘要表,该表可以获取每个客户的总数并将其显示在列表中:

function getClientTotals(sheetname, colcount)
{
colcount = colcount ? colcount : 6;
var res;
var ss = SpreadsheetApp.openById('myid_goes_here');
if(ss)
{
res = [];
var totrow = ss.getRange(sheetname + '!A1:ZZ1').getValues()[0];
for(var i = 0; i < totrow.length; i += colcount)
{
res.push([totrow[i], totrow[i + colcount - 1]]);
}
}
return res;
}


然后,我刚刚向包含 =getClientTotals($C$7,$C$8)的摘要工作表中添加了一个单元格,该单元格传入了月份的工作表名称和每个客户端的列数(以防“ schema”修改)。

一切正常,但是,当源数据更改时,它不会更新。我添加了一个 onEdit触发器;不开心如果您转到脚本编辑器并单击“保存”,它将更新,但这没有用。我想念什么吗?

最佳答案

您缺少快速缓存错误功能。它是这样工作的:

Google认为您所有的自定义函数都仅直接依赖于其参数值来返回其结果(您可以选择依赖于其他静态数据)。

在此前提下,他们只有在参数更改时才能评估您的功能。例如

假设我们在单元格B1上有文本“ 10”,然后在其他单元格上键入=myFunction(B1)

将评估myFunction并检索其结果。然后,如果将单元格B1的值更改为“ 35”,则将按预期重新评估自定义,并且正常检索新结果。
现在,如果您再次将单元格B1更改为原始的“ 10”,则没有重新评估,原始结果将立即从缓存中检索。

因此,当您将工作表名称用作参数来动态获取它并返回结果时,就违反了缓存规则。

不幸的是,没有这个惊人的功能,您将无法拥有自定义功能。因此,您必须更改它以直接接收值(而不是工作表名称),或者不使用自定义函数。例如,您可以在脚本上有一个参数,告诉摘要应在何处,并在总更改时有onEdit更新它们。

关于google-apps-script - 汇总数据的脚本未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022984/

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