google sheets脚本编辑器-js range.length错误

xzabzqsa  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(379)

我试图在google sheets中创建一个自定义函数,该函数将垂直复制给定次数的一系列值:

因此,当应用repeat(a1:a4,3)时,它会垂直粘贴a1 3次、a2 3次、a3 3次和a4 3次。

我的尝试似乎很有效,正确显示了结果,但它给出了一个我不理解的错误。

function repeat(range,number){
   var result = [];
   const l = range.length;
   for (var i=0;i<len<i++)
      for(var j=0;j<number;j++)
         result.push(range[i])
      return result;
}

应用程序脚本显示的错误是:“typeerror:无法读取未定义的属性'length'”,表示第3行。请随时指导我如何使用该属性,以及是否有更简单/更好的选项,因为我是应用程序脚本和js的初学者。

gupuwyp2

gupuwyp21#

您说您正在使用它作为自定义函数,因此您的范围实际上是一个二维值数组,而不是类范围。在文档中查找自定义函数。
如果将此代码插入排列中:

function repeat101(values,count) {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  Logger.log(JSON.stringify(values));
}

这样=重复101(a1:a4,3)
其中a1:a4看起来像这样:
1234
然后查看您的执行日志,您会发现:
执行日志:2021年7月9日下午2:08:58信息[[1]、[2]、[3]、[4]]
如果您熟悉使用调试器,您会立即将其识别为二维列数组

function REPEAT101(values, count) {
  const sh = SpreadsheetApp.getActiveSheet();
  let oA = [];
  values.forEach(r => { for (var j = 0; j < count; j++) { oA.push([r[0]]) } });
  return oA;
}

相关问题