首页 文章

自定义脚本的公式不会在Google电子表格中更新

提问于
浏览
2

我在使用电子表格时遇到了一些问题:如 Headers 中所述,我在列中添加了一个公式,该公式根据另一个单元格的值调用自定义脚本,但是当我修改其他单元格时,公式不会更新..这似乎适用于标准公式,但是,在我的单元格中调用我的脚本:

  • 如果我尝试在公式单元格中添加空格,则结果仍未更新 .

  • 如果我清除公式单元格并重新键入公式,它仍然显示旧值 .

  • 如果我将公式单元格粘贴到另一个单元格中,则新单元格是最新的 .

这是我的剧本 . 如果没有单词:对于给定的'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;
}

例如:

  • A1:日期

  • A2:测试

  • A3:跑步

  • A4:= getLastStatut(B1)

所以A4显示“Running”,但是如果我改变A3,它仍然显示“Running”,而它应该显示A3的值 .

这是一个错误还是我做错了什么?欢迎任何帮助 .

亚历克西斯

1 回答

  • 5

    问题在于自定义函数的缓存"feature" . 我在other thread解释一下,请阅读 .

    但这里的底线是,自定义函数不应该访问非静态数据,所有变量信息都应该作为参数传递 . 在您的情况下,整个数据集应该是脚本的参数 . 自定义函数永远不应该有任何范围 .

    //getting values like this is wrong (for a custom function)
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
    

相关问题