我有一个带有自定义函数的电子表格,调用这样的Web API:
function myFunction(value) {
var value = value
...
}
我以这种方式在B列的不同单元格中调用此函数:
=myFunction(A2)
=myFunction(A3)
=myFunction(A4)
...
以便值的变化与A列的内容有关。
现在,我想用触发器更新所有这些功能,触发器可以是每分钟,每小时或午夜。我使用了Google Apps脚本界面上的内置触发器,就像我过去使用外部脚本一样,但它不起作用(我认为因为触发器调用函数时没有"值"变量)。 我想添加一个外部触发的脚本来更新另一个单元格的值(假设" C1"),然后使用onEdit函数更新自定义函数。我搜索了很多关于onEdit的内容,但我真的不明白如何使它适用于我的情况。 onEdit函数应该调用myFunction吗?以什么方式?
感谢任何帮助,谢谢
答案 0 :(得分:0)
您可以使用此功能刷新列中的公式:
function updateColumnBFormulas()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('test');
var range = sheet.getRange(1, 2, sheet.getLastRow(), 1);
// get all formulas
var formulas = range.getFormulas();
for (var i = 0; i < formulas.length; i++)
{
// if there's formula in a cell
if (formulas[i][0])
{
// refresh it
sheet.getRange(i+1, 2).setFormula(formulas[i][0]);
}
}
}
然后设置触发器每分钟运行一次(编辑 - 当前项目的触发器):
答案 1 :(得分:0)
好的,我解决了一个更新单元格的外部脚本,然后我的custon函数中的一个伪参数引用了该单元格(由@RobinGertenbach建议) 这是外部触发的脚本:
function update() {
var number = Math.floor(new Date().getTime()/1000);
ss.getSheetByName("Data").getRange("A1").setValue(number);
}
我的自定义函数现在看起来像:
function myFunction(value, now) {
var value = value
var now = now
...
}
然后以这种方式在B列中调用它:
=myFunction(A2, $A$1)
=myFunction(A3, $A$1)
=myFunction(A4, $A$1)
...
上面发布的具有刷新公式功能的解决方案没有完成工作,我不知道为什么。公式很新鲜,但价值没有得到更新。 非常感谢你的帮助!