繁体   English   中英

Google表格脚本:将函数作为参数传递

[英]Google Sheets Script: Passing function as a parameter

我在Google表格中创建了一个脚本:

/**
 * @param {array} input A row or a column.
 * @param {function} condition A function returning bool.
 * @return The last value in the input satisfying the condition.
 * @customfunction
 */
function GetLastGoodValIn1DArray(input, condition) {
  // realization ...
}

当我尝试使用下一个参数调用此函数时:

=GetLastGoodValIn1DArray(D11:H11;ISNUMBER)

我收到下一个错误:

错误

TypeError:#NAME? 不是函数,而是字符串。 (第26行)。

显然,“ ISNUMBER”被解释为字符串。 但是如何将其作为函数传递呢?

根据这个旧的google docs论坛以及此Stack Overflow问题,无法从脚本访问内部google sheet函数。

请注意,即使Google Sheets内部函数也不能将函数作为参数。 例如,内部函数SUBTOTAL而不是直接采用该函数,而是采用与所需函数相对应的数字代码。

我能想到的最好的方法是像excel一样为vba构建自己的WorksheetFunction对象。 那可能是一个对象映射,它接受一个字符串并返回您编写的函数。 例如:

var worksheetFunction = {
  isnumber: function (x) {
    return !isNaN(x);
  }
};

另一个注意事项ISNUMBER不会作为字符串传递给您的自定义函数。 Google表格首先将其计算为错误,然后传递字符串#NAME? 您的自定义功能。 您可以通过使用公式=type(ISNUMBER)看到此结果,该公式在您的自定义函数condition === "#NAME?"也返回16(错误代码) condition === "#NAME?" 将评估为true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM