在我的 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])
,它返回“05,7,3”
我做错了什么?
最佳答案
自定义函数参数被转换为 JavaScript 对象类型。如果参数是一个多单元格范围,它会被转换为一个数组对象,其成员是数组,换句话说,作为一个二维数组。
为了获取每个单元格的值,请使用 input[i][j]
而不是 input[i]
。
例子:
/**
* @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 替换空白。
引用资料
关于javascript - 在 Google 应用程序脚本中运行的范围输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434398/