自定义Google Apps Script函数无法正确接收数组参数
解决Google Apps Script自定义函数接收Google Sheets数组参数的问题
问题原因
Google Sheets向自定义函数传递数组参数时,会自动把水平数组(如{1,2,3})或垂直数组(如{1;2;3})包装成二维数组。比如你调用=Prodmult({1,2,3})时,函数收到的legs实际是[[1,2,3]],所以legs.length返回的是外层数组的长度1,而非你期望的元素个数3。
解决方案
先将传入的二维数组扁平化处理为一维数组,再执行乘法运算。以下是实现代码:
function Prodmult(legs) { // 扁平化二维数组,兼容水平/垂直数组的传递格式 const flatNumbers = legs.flat(); // 计算数组所有元素的乘积,初始值设为1(乘法单位元) return flatNumbers.reduce((total, num) => total * num, 1); }
代码说明
legs.flat():将二维数组转为一维数组,无论是[[1,2,3]]还是[[1],[2],[3]],都会被处理成[1,2,3]。reduce():遍历一维数组,累积计算所有元素的乘积,初始值1确保空数组时返回1(若需要空数组返回0,可修改初始值并添加长度判断)。
测试验证
在Google Sheets中调用:
=Prodmult({1,2,3})返回6=Prodmult({1;2;3})返回6=Prodmult({2,3,4})返回24
内容的提问来源于stack exchange,提问作者user5670600
相关产品推荐
相关产品推荐

