[英]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.