脚本编辑器接受的内容与Google表格接受的内容可以不同吗?

时间:2019-03-27 15:48:51

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

因此,我一直在尝试构建AADD(范围,范围)功能。它还不完整,所以不要为此而生气。目前令我困扰的是,脚本编辑器在有意义的代码中所说的内容与将要运行的Google表格似乎有所不同。

首先是测试人员:

function test_AADD() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range1 = sheet.getRange("B2:E2");
  var range2 = sheet.getRange("B3:D3");
  var result = AADD(range1, range2);
}

故意将范围的长度不匹配,因为我试图找出如何发送回标准错误消息,例如“ #ERROR!”。 (那里的一些帮助也会有所帮助。)

这是公共的AADD功能。我希望有一天能找到如何使函数私有化(另一件事我需要帮助。)

/**
 * Adds two arrays
 *
 * @param {Range} range1 The first parameter
 * @param {Range} range2 The second paramter
 * @return {Range}
 * @customfunction
 */
function AADD(range1, range2) {
  return fnAADDrr(range1, range2);
}

实现AADD代码的(最终)私有函数(相信我,这是疯狂的意义)

function fnAADDrr(range1, range2) {
  var r1len = range1.getNumRows() * range1.getNumColumns();
  var r2len = range2.getNumRows() * range2.getNumColumns();
  if (r1len !== r2len) {
    return new Error("#ERROR!");
  }   
}

到目前为止,该函数的作用还很强,因为我只是想尝试如何测试一个范围比另一个项目少的Range。

因此,现在我们要解决主要问题:有了脚本后,脚本编辑器就不会抱怨传入的Range变量range1和range2的方法调用。而且,当我在脚本编辑器中运行test_AADD函数时,我得到的响应基本上是合理的(除了“ new Error”一词实际上并未返回-我需要其他帮助。)

因此,我又回到了我的Google表格文件。在单元格中输入

=AADD(B2:D2,B3:D3)

现在,这甚至不会触发“新错误”位,因为范围的大小相同。即使这样,我也会收到“ #ERROR!”如果我用鼠标悬停在它上面,将会得到

TypeError: Cannot find function getNumRows in object 1,2,3 (line 73) 

其中1,2,3是B2:D2中的内容,第73行是脚本文件中的位置。

那么脚本编辑器和Google表格为什么不能就允许的内容达成共识?

0 个答案:

没有答案