在我的Google工作表中的单元格中,我调用我的函数:myFunction(A1:A3)
,其中A1 = 5,A2 = 7,A3 = 3.我现在想要循环输入(A1,A2,和A3)和(例如)将它们相加。
function myFunction(input) {
if (!input.map) {
return -1;
}
var sum=0
for(var i=0; i<input.length; i++){
sum = sum + parseInt(input[i]);
}
return sum
}
但它只返回A1(5)中的值,因为input.length
返回1。
如果我删除parseInt(input[i])
,则返回&#34; 05,7,3&#34;
我做错了什么?
答案 0 :(得分:3)
自定义函数参数转换为JavaScript对象类型。如果参数是多单元范围,则将其转换为数组对象,其成员是数组,换句话说,转换为2D数组。
为了获取每个单元格值,而不是input[i]
使用类似input[i][j]
的内容。
示例:
/**
* @customfunction
*/
function mySum(input) {
if (!input.map) return -1;
var sum = 0;
for(var i = 0; i < input.length; i++){
for(var j = 0; j < input[0].length; j++){
sum = sum + parseInt(input[i][j]);
}
}
return sum
}
注意:可以通过添加一些规则/输入数据验证来改进上述功能,例如将空格替换为0。
参考
答案 1 :(得分:0)
有这样的功能,但是如果你想学习如何编写脚本和代码,那就太棒了! 该代码适用于垂直范围,例如(A1:A5),但在水平/方形范围内不会,只需在第一个内部做另一个循环来做二维数组的总和
for(var i=0; i<input.length; i++){
for(var j=0; j<input[0].length; j++){
sum = sum + parseInt(input[i][j]);
}
}