Google App功能-重新计算/刷新值

时间:2019-06-05 14:36:27

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

一段时间以来,我一直试图找到解决该问题的方法。

这是代码

function CHECK(INPUT) {
  var url = "GOOGLE SHEET URL" + INPUT;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText("UTF-8");
  var data = JSON.parse(json);
  var price = data;
  SpreadsheetApp.flush();
  return price;
}

此函数从Google工作表中提取值,结果将其显示在另一个Google工作表中。问题在于,当源更改时,目标值不会更改。

我所需要的是一些将强制重新计算Google表格中的值或刷新功能或其他功能,但将使值保持最新状态的

PS =CHECK(INPUT, **DATE**)不是解决方案

1 个答案:

答案 0 :(得分:1)

  • 您要使用Google Apps脚本强制重新计算自定义函数。

如果我的理解是正确的,那么该示例脚本如何?我认为您的情况有几个答案。因此,请考虑这只是几个答案之一。

在此示例脚本中,为了重新计算功能,该功能被相同的功能替换。

示例脚本1:

在此示例脚本中,当=CHECK(INPUT)是“ Sheet1”的单元格“ A1”时,该函数将被相同的函数替换。

var sheetName = "Sheet1"; // Please modify this for your situation.
var cell "A1"; // Please modify this for your situation.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName(sheetName).getRange(cell);
var formula = range.getFormula();
range.clearContent();
SpreadsheetApp.flush();
range.setFormula(formula);

示例脚本2:

在此示例脚本中,“ Sheet1”中的所有功能都被相同的功能取代。

var sheetName = "Sheet1"; // Please modify this for your situation.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName(sheetName).getDataRange();
var values = range.getValues();
var formulas = range.getFormulas();
var replacedValues = values.map(function(e, i) {return e.map(function(f, j) {return formulas[i][j] || f})});
range.clearContent();
SpreadsheetApp.flush();
range.setValues(replacedValues);

注意:

  • 运行上述示例脚本时,将重新计算该函数。例如,安装了一个示例脚本作为时间驱动触发器,时间驱动触发器会强制更新要重新计算的功能。

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。