我在使用电子表格时遇到了一些问题:如标题中所述,我在列中添加了一个公式,该公式根据另一个单元格的值调用自定义脚本,但是当我修改其他单元格时,公式不会更新...这似乎适用于标准公式,但是,在我的单元格中调用我的脚本:
这是我的脚本。如果没有单词:对于给定的'company'参数,它会搜索符合此条件的所有行并将第3列单元格存储在变量中,最后返回(因此返回最后一个值):
function getLastStatut(company) {
var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var out = "not found";
var row;
for(i in values){
row = values[i];
if(row[1]==company){
out = row[2];
}
}
return out;
}
例如:
所以A4显示“正在运行”,但是如果我改变A3,它仍然显示“正在运行”,而它应该显示A3的值。
这是一个错误还是我做错了什么?欢迎任何帮助。
亚历
答案 0 :(得分:5)
问题在于自定义函数的缓存“功能”。我在这个other thread中解释一下,请阅读。
但这里的底线是,自定义函数不应该访问非静态数据,所有变量信息都应该作为参数传递。在您的情况下,整个数据集应该是脚本的参数。自定义函数永远不应该有任何范围。
//getting values like this is wrong (for a custom function)
var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();