提问人:Mr.Turtle 提问时间:11/24/2022 更新时间:11/24/2022 访问量:23
在嵌套数组中按索引访问元素将返回 undefined
Accessing an element by index in a nested array returns undefined
问:
我目前正在研究将数据从一行复制到另一行,中间有空格,需要手动输入的数据。我正在尝试复制当前所选行中的大部分数据并将其粘贴到空白行中,而不附加任何新行。我目前遇到的问题是当我尝试直接访问嵌套数组中的值时。数组在调用时将正确记录,但数组中的值不会单独显示,除非我使用 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())
它返回行中前两个单元格的值的数组。
我知道双重索引是导致问题的原因,我只是不确定为什么它会导致问题,但我希望能够单独访问数据,以便我可以将数据复制到新行。
我也愿意进一步优化或以我可能错过的不同方式来实现这一点。
答:
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 |
上一个:什么是“列出超出范围的索引”
下一个:如何逐级解嵌 JSON
评论