我有一个简单的函数来获得一些单元格值
function getValue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[4];
var range = sheet.getRange("C2:C4");
var cell = range.getCell(1, 1); // "C2"
if (cell.isBlank()) {
return 'error'
} else {
return cell.getValue()
}
}
但是当我更改C2
中的数据时,包含=getValue()
函数的单元格不会立即刷新。只有我再次运行脚本并返回工作表。是否有可能加快这一进程?任何代码?感谢。
答案 0 :(得分:0)
如果您必须在这种情况下使用自定义函数,那么这个变通方法呢?我不知道这是否是最适合你的方式。请将此视为几个答案之一。
脚本流程如下。
SpreadsheetApp.flush()
将值反映到工作表。 按onEdit()
,当您编辑单元格时,将启动此示例脚本。
function onEdit(e) {
var range = e.source.getDataRange();
var data = range.getValues();
var formulas = range.getFormulas();
var values = data.map(function(e){return e.slice()});
for (var i in formulas) {
for (var j in formulas[i]) {
if (formulas[i][j]) {
data[i][j] = formulas[i][j];
values[i][j] = "";
}
}
}
range.setValues(values);
SpreadsheetApp.flush();
range.setValues(data);
}
=getValue()
的单元格,刷新速度比@ random-parts的方法慢。onEdit()
。如果这对你没用,我很抱歉。