在 Google 应用程序脚本中运行的范围输入
Range input to function in Google apps script
在我 google sheet 的单元格中,我这样调用我的函数: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
}
但它只是 returns A1 (5) 中的值,因为 input.length
returns 1。
如果我删除 parseInt(input[i])
,它会 returns "05,7,3"
我做错了什么?
有用于执行此操作的内置函数,但如果您想学习如何编写脚本和编码,这很棒!
该代码仅适用于垂直范围,例如 (A1:A5) 但在 horizontal/square 范围内不会,只需在第一个范围内做另一个循环以求和 2D array
for(var i=0; i<input.length; i++){
for(var j=0; j<input[0].length; j++){
sum = sum + parseInt(input[i][j]);
}
}
自定义函数参数转换为 JavaScript 对象类型。如果参数是一个多单元格范围,它会被转换为一个数组对象,其成员是数组,换句话说,作为一个二维数组。
为了获取每个单元格的值,不要使用 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 替换空白。
参考资料
在我 google sheet 的单元格中,我这样调用我的函数: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
}
但它只是 returns A1 (5) 中的值,因为 input.length
returns 1。
如果我删除 parseInt(input[i])
,它会 returns "05,7,3"
我做错了什么?
有用于执行此操作的内置函数,但如果您想学习如何编写脚本和编码,这很棒! 该代码仅适用于垂直范围,例如 (A1:A5) 但在 horizontal/square 范围内不会,只需在第一个范围内做另一个循环以求和 2D array
for(var i=0; i<input.length; i++){
for(var j=0; j<input[0].length; j++){
sum = sum + parseInt(input[i][j]);
}
}
自定义函数参数转换为 JavaScript 对象类型。如果参数是一个多单元格范围,它会被转换为一个数组对象,其成员是数组,换句话说,作为一个二维数组。
为了获取每个单元格的值,不要使用 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 替换空白。
参考资料