在嵌套数组中按索引访问元素将返回 undefined

Accessing an element by index in a nested array returns undefined

提问人:Mr.Turtle 提问时间:11/24/2022 更新时间:11/24/2022 访问量:23

问:

我目前正在研究将数据从一行复制到另一行,中间有空格,需要手动输入的数据。我正在尝试复制当前所选行中的大部分数据并将其粘贴到空白行中,而不附加任何新行。我目前遇到的问题是当我尝试直接访问嵌套数组中的值时。数组在调用时将正确记录,但数组中的值不会单独显示,除非我使用 getValue 函数,但它只显示数组的第一项。

这是代码现在的样子:

const sheet = SpreadsheetApp.getActiveSheet();
const activeCell = sheet.getCurrentCell();


function test() {
  let activeRow = sheet.getRangeList([activeCell.getA1Notation() + ':' + activeCell.offset(0,1).getA1Notation(), activeCell.offset(0,3).getA1Notation(), activeCell.offset(0,5).getA1Notation() + ':' + activeCell.offset(0,7).getA1Notation()]).getRanges();
  Logger.log(activeRow[0][0].getValue())
};

这给了我错误“TypeError:无法读取未定义的属性”getValue“。但是,当我在记录器中只使用一个索引时,例如:

Logger.log(activeRow[0].getValue())

它给了我索引数组中的第一个值。

如果我将函数更改为 getValues 并且仅使用一个索引,例如:

Logger.log(activeRow[0].getValues())

它返回行中前两个单元格的值的数组。

我知道双重索引是导致问题的原因,我只是不确定为什么它会导致问题,但我希望能够单独访问数据,以便我可以将数据复制到新行。

我也愿意进一步优化或以我可能错过的不同方式来实现这一点。

数组 google-apps-script 嵌套列表

评论


答:

0赞 Cooper 11/24/2022 #1

试试这个方法:

function test() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const cell = sh.getActiveCell();
  const r = sh.getRange(cell.getRow(),1,1,sh.getLastColumn()).getValues()
  Logger.log(r[0][0])
}

Execution log
1:46:41 PM  Notice  Execution started
1:46:42 PM  Info    10.0
1:46:43 PM  Notice  Execution completed
一个 B C D E F G
11 10 11 12 13 14 15 16