【问题标题】:How to refresh the results of custom formulas automatically in Google Sheets? [duplicate]如何在 Google 表格中自动刷新自定义公式的结果? [复制]
【发布时间】:2020-02-12 23:52:54
【问题描述】:

我在 Google 表格中确实有简单的自定义函数 margin()(使用 Apps 脚本),它从名为 “汇率”的表格中的 单元格 H55 中获取一个值并简单地返回与单元格中相同的值。

function margin()
{     
  var price = 0;
  price = SpreadsheetApp.getActiveSpreadsheet().getRange("Exchange Rates!H55").getValue();
  return price;
};

如果我将 =margin() 放入任何单元格(例如 H56) - 它可以工作。但是当我更新 cell H55 中的值时,比如说......从数字 1,051,55 - 没有任何反应单元格 H56 的值。 (公式等于margin()函数)。

当我将公式 =margin() 放入任何单元格时,它第一次计算正确,返回 1,55。 (同样 - 当我将 cell H55 的值更改为另一个数字时,我的公式为 的单元格不会更新)。

请问,我是否必须以某种方式再次运行该脚本?或者我能做什么? (我只是尝试刷新页面,但什么也没发生,我绝对不想用我的函数重写每个单元格。)谢谢!

【问题讨论】:

标签: javascript google-apps-script google-sheets


【解决方案1】:

好的,根据 cmets,有几个有用的答案 herehere


但基本上,如果我理解正确,您希望您的自定义函数 margin() 获取给定单元格的值(您的代码中的 H55),最好用它做一些事情并返回结果。 (就目前而言,您只是返回 H55 的值)。

为什么不让您的自定义函数使用H55 作为参数?这样,当H55 的值发生变化时,所有出现的自定义函数都会更新。

示例:

示例脚本:

function margin(price){
  
  // Return the margin (10%)
  var margin = price*0.1;
  return margin;
};

【讨论】:

  • 嗨,Aerials,谢谢,但这没有帮助。我在脚本中需要它,这是我拥有的最简单的脚本。然后我有例如“ if (number.search("-CZ-")>=0) {price = SpreadsheetApp.getActiveSpreadsheet().getRange("Exchange Rates!H43").getValue();} 并且有同样的问题。以及为什么我不想放置边距参数,因为我正在处理 80 张纸,而且我不知道有多少个单元格。我不想纠正一切,如果我需要随位置移动它。我想直接在脚本中。
  • 我确实在脚本中对此进行了更多计算:例如:上面的数字搜索:return price*margin;当我在脚本中使用时,它工作得很好,但并不令人耳目一新:SpreadsheetApp.getActiveSpreadsheet().getRange("Exchange Rates!H43").getValue(); .它第一次完全按照我的需要工作,但是当我更新源代码时,脚本不会做出反应,也不会重新计算自己。
  • 好的:我确实有部分解决方案。函数 onEdit(e){SpreadsheetApp.getActiveSheet().getRange('A1').setValue(Math.random());}。我把 =margin($A$1) 放在那里。现在它的工作,但只在活动列表中。不在所有列表中。
  • 尝试将您的 cmets 中的信息添加到您的问题中。毕竟,人们试图回答的是你的问题。无论如何,无论你有多少工作表或公式,你都可以编写一个循环来一次更改它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多