GoogleSheets中的Javascript:将单元格范围的参数传递给函数

GoogleSheets中的Javascript:将单元格范围的参数传递给函数,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正试图在Google Sheets中运行并测试此功能: var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('NN'); var range_p = sheet.getRange('B32:J32'); var range_q = sheet.getRange('B33:J33'); kl_divergence(range_p, range_q); function kl_divergen

我正试图在Google Sheets中运行并测试此功能:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('NN');
var range_p = sheet.getRange('B32:J32');
var range_q = sheet.getRange('B33:J33');
kl_divergence(range_p, range_q);

function kl_divergence(range_p, range_q) {
  var norm = 0.00001;
  var i;
  var tot = 0.0;
  for (i = 0; i < range_p.length; i++){
    tot += range_p[i] * LOG((range_p[i] + norm) / (range_q[i] + norm));
  }
  return tot;
}
发生了什么,如何修复它?

您正在使用的
getRange()
函数返回一个Range类

我认为您需要将其更改为:

var range_p = sheet.getRange('B32:J32').getValues();
var range_q = sheet.getRange('B33:J33').getValues();

getRange
返回范围对象。我认为你的问题的原因是这样的。在您的情况下,我认为需要使用
getValues()
。但是从你的脚本来看,我不明白你想在for循环中做什么。因此,我不能提出修改后的脚本。我为此道歉。我可以问你目标的细节吗?谢谢!我正在计算两个范围的Kullback-Liebler散度(),你能提供
LOG()
的脚本吗?对不起;这应该是Math.log——对数函数。这是我到目前为止的一份工作表:我想看看在谷歌工作表中实现前馈神经网络有多难。感谢您添加信息。我认为“B32:J32”和“B33:J33”的每个范围都是一行。因此,在脚本中,对
sheet.getRange(#####).getValues()[0]
的修改是合适的。但是当我看到你的电子表格时,“B32:J32”和“B33:J33”是
0
#DIV/0,分别为。我认为这也是问题之一。这个怎么样?我尝试添加getValues(),但它仍然抛出相同的错误,唉。
var range_p = sheet.getRange('B32:J32').getValues();
var range_q = sheet.getRange('B33:J33').getValues();