自定义函数中获取Spread对象
在使用自定义函数的时候,有时候需要获取当前的spread对象,但是又不想把spread对象作为参数传入,想在重写evaluate方法的参数中获取spread对象,该如何实现呢?1.isContextSensitive返回true,,函数的计算依赖于上下文
FactorialArrayFunction.prototype.isContextSensitive = function () {
return true;
};2.在重写evaluate的参数中获取spread对象
FactorialArrayFunction.prototype.evaluate = function (arg) {
console.log(arg.source.getSheet().getParent())
var t = 1;
var result = [[]];
if (arguments.length === 1 && !isNaN(parseInt(arg))) {
for (var i = 1; i <= arg; i++) {
t = i * t;
result.push(t);
}
return new GC.Spread.CalcEngine.CalcArray(result);
}
return "#VALUE!";
};通过arg.source.getSheet().getParent()就可以获取到自定义函数当前所在的工作簿
完整demo见附件
页:
[1]