从调用谷歌的电子表格单元中的谷歌应用程序脚本库(Calling a Google App Scrip

2019-09-17 12:31发布

尝试在谷歌电子表格中的新的库功能。 我有包括与“测试”的标识符的库和库实现的功能为“foo()”

进入= Test.foo()到电子表格单元格给出错误:“未知函数名TEST.FOO”

如果我在电子表格中创建一个函数来包装库函数:

function foo()
{
  return Test.foo();
}

然后在我的电子表格中以后电池使用= FOO(),一切都很好。 为所有人创造库函数包装函数,使他们能够在电子表格单元格中使用使得使用库不太理想。 有没有一种方法调用从电子表格单元格的库函数?

Answer 1:

这里没有目前的方式来直接调用这些库函数从细胞的自定义功能。 创建一个包装,因为你所做的,就是目前这样做的方法。 如果您希望能够直接调用库函数的自定义功能,请提出,作为对一个问题的问题跟踪器 。



Answer 2:

这是一种解决方法,可以让你,如果你在这一个通用的包装函数调用粘贴任何库函数。 然后你就可以从电子表格调用此。

举例来说,如果我有一个名为MyLib中库函数添加(X,Y)(假装x在单元格A1和Y是在单元格A2),我可以这样称呼它:= LIB_FUNC(“MyLib中”,“添加” ,A1,A2)。

这是一个有点丑陋,但至少可以让我只需要粘贴一个函数,然后访问任何库函数。 请注意,这取决于“这个”对象调用包装函数时在范围内的无证结构。 小机会,这可能会破坏随着时间的推移。 可能会看到,如果我能发布这个作为一个附加的。

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;
}


文章来源: Calling a Google App Script library from a Google spreadsheet cell