Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 带有自定义脚本的公式不';谷歌电子表格中的t更新_Google Sheets_Google Apps Script - Fatal编程技术网

Google sheets 带有自定义脚本的公式不';谷歌电子表格中的t更新

Google sheets 带有自定义脚本的公式不';谷歌电子表格中的t更新,google-sheets,google-apps-script,Google Sheets,Google Apps Script,我在使用电子表格时遇到了一些问题:正如标题中所述,我在一列中输入了一个公式,该公式根据另一个单元格的值调用自定义脚本,但当我修改另一个单元格时,该公式不会更新。。。这似乎适用于标准公式,但是,在我的手机中调用我的脚本: 如果我尝试在公式单元格中添加空白,结果仍然不会更新 如果我清除公式单元格,然后重新键入公式,它仍然显示旧值 如果我将公式单元格复制粘贴到另一个单元格中,则新单元格是最新的 这是我的剧本。如果没有几个词:对于给定的“company”参数,它将搜索与此条件匹配的所有行,并将第三列

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

  • 如果我尝试在公式单元格中添加空白,结果仍然不会更新
  • 如果我清除公式单元格,然后重新键入公式,它仍然显示旧值
  • 如果我将公式单元格复制粘贴到另一个单元格中,则新单元格是最新的
这是我的剧本。如果没有几个词:对于给定的“company”参数,它将搜索与此条件匹配的所有行,并将第三列单元格存储在一个变量中,最后返回(因此返回最后一个值):

例如:

  • A1:日期
  • A2:测试
  • A3:跑步
  • A4:=getLastStatut(B1)
所以A4显示“Running”,但如果我更改A3,它仍然显示“Running”,而它应该显示A3的值

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


Alexis

问题在于自定义函数的缓存“功能”。我在这里解释一下,请阅读

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

//获取这样的值是错误的(对于自定义函数)
var values=SpreadsheetApp.getActiveSheet().getDataRange().getValues();

谢谢Henrique,很遗憾我没有找到你提供的链接。最后,我将我的函数定义改为:“function getLastStatus(company,values)”,并以这样的方式调用它“=getLastStatut(B19,A:C)”,因为我只需要解析前三列。有时很难找到一个好的搜索条件。特别是当我们不确定问题是什么时:)
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;
}