javascript - 在 Google 应用程序脚本中运行的范围输入

标签 javascript google-apps-script google-sheets custom-function

在我的 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/

相关文章:

google-apps-script - ScriptApp.getOAuthToken 未获得通过 url 获取应用程序进行驱动的正确权限?

google-apps-script - 如何使用应用脚本在 Gmail 插件中使用 HtmlService

google-apps-script - 谷歌应用程序脚本中 array.includes() 的替代方案?

google-sheets - 在 Google 表格中重复某个范围

javascript - jQuery Mobile 弹出窗口不会在页面导航后显示,仅在硬刷新或返回同一页面后显示

javascript - Breeze JS - 从对象图扩展模型

javascript - 检索完整页面 HTML - jQuery

javascript - 如何在 javascript 中使用 EventListener 下拉或隐藏和显示子菜单?

validation - 如何在 Google 表格中执行动态/相关下拉菜单?

python-2.7 - gspread 输入前面有单引号