如何在自定义函数中调用Google表格公式?

3

是否可以从自己的Google应用程序脚本自定义函数中调用任何Google Sheets公式?如果可以,如何操作?

显然不能像在表格内部那样仅使用公式名称。就像这样,我希望它能正常工作:

function myCustomFunction() {
  return TDIST(1,30,1); // calling =myCustomFunction() does not work due to TDIST giving a ReferenceError, even though =TDIST(1,30,1) works inside the spreadsheet
}

但由于谷歌内置的公式可能依赖于一些JS实现的函数,如果没有API可以让我们轻松重复使用这些函数,那将会很奇怪。我查看了谷歌表格API参考文档,但它似乎是为从外部服务调用自定义函数而设计的。看起来你可以通过这样一个POST请求调用谷歌自己的公式。但是当你必须将其与特定的谷歌表格环境绑定的自定义脚本中直接引用它们时,这似乎非常繁琐。如果不能这样做,那么直接从自定义函数中使用这些内置公式函数的最少绕路方法是什么?


嗯...不是很对。在我的特定自定义函数中,我不想直接与电子表格进行交互,而只是直接使用内置函数,从脚本本身输入参数,而不是从电子表格中输入。 - Magne
1
具体来说,重点在于 这个答案 中的“旧帖子”。简而言之,不,你不能那样做。最直接的方法是使用这个 - TheMaster
但是直接使用内置函数,从脚本本身输入参数即可。如果将myCustomFunction作为从电子表格调用的自定义函数进行提及,则会给人一种不同的印象。无论如何,答案都是一样的。不可能实现。 - TheMaster
通常,myCustomFunction 是从电子表格中调用的。 我不需要_评估_表达式(如=1+2),使用通用的 eval() 对我思考的内容来说太过于宽泛。 我确定他们没有实现这个功能是因为安全方面的担忧。 我曾希望默认公式使用的函数暴露在某种 API 中.. 不过, 感谢您的建议。 - Magne
这里的基本假设当然是Google使用(相当规则的)JavaScript函数实现了默认公式(如SUMTDIST等)。但在Google Sheets的渲染中可能存在一些我尚未意识到的黑魔法……也许是因为采用了假定的异步响应式编程来实现电子表格(常规公式似乎可以即时加载,而自定义函数需要一些时间来加载)。 - Magne
1个回答

5

自从2011年一个功能请求被提出后,由于团队间的问题,Google已经拒绝了此功能。

状态: 不会修复 (不可行) by ev....@google.com

我们已向电子表格团队提出此要求,目前将其标记为“不会修复”。

显然,电子表格团队尚未做出回应。一篇相关的产品论坛帖子称,Google没有意图将电子表格功能与脚本整合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接