在Google电子表格中试用新的库功能。我已经包含一个标识符为“Test”的库,库实现了函数“foo()”
将= Test.foo()输入电子表格单元格会出现错误:“未知函数名称TEST.FOO”
如果我在电子表格中创建一个函数来包装库函数:
function foo()
{
return Test.foo();
}
然后在我的speadsheet单元格中使用= foo(),一切都很好。为所有库函数创建包装器函数,以便它们可以在电子表格单元格中使用,这使得使用不太理想的库。有没有办法从电子表格单元调用库函数?
答案 0 :(得分:4)
目前还没有办法直接将这些库函数称为单元格中的自定义函数。正如您所做的那样,创建包装器是目前执行此操作的方法。如果您希望能够直接将库函数作为自定义函数调用,请在Issue Tracker上将其作为一个问题提出。
答案 1 :(得分:2)
这是一种解决方法,允许您在粘贴此通用包装函数时调用任何库函数。然后你可以从电子表格中调用它。
例如,如果我有一个名为MyLib的库,其函数为add(x,y)(假设x在单元格A1中,y在单元格A2中),我可以像这样调用它: = LIB_FUNC(“MyLib”,“add”,A1,A2)。
这有点难看,但至少允许我只需要粘贴这个函数然后访问任何库函数。请注意,这取决于调用包装函数时范围内的“this”对象的未记录结构。这可能会随着时间的推移而破裂。可能会看我是否可以将其作为附加内容发布。
function LIB_FUNC(libraryName, functionName) {
var result;
var lib = this[libraryName];
var extraArgs = [];
if (lib) {
var func = lib[functionName];
if (func) {
if (arguments.length > 2) {
extraArgs = Array.apply(null, arguments).slice(2);
}
result = func.apply(this, extraArgs);
} else {
throw "No such function: " + functionName;
}
} else {
throw "No such library: " + libraryName;
}
return result;
}