在Excel中使用VBA多年后,我正在学习Google脚本的基础知识,因此请原谅这个基本问题。
我想使用getValues()获取工作表中的一系列单元格,然后创建一个多元素数组。
这是我代码中的一个简单示例:
var gameInfo = [];
gameInfo = gameMasterSheet.getRange(3, 3, 1, 9).getValues();
如您所见,定义的范围是一行中有9个单元格。
我的目标是从这9个单元格创建一个数组,并通过单独的数组元素访问每个单元格。但是,似乎所有9个单元格值都已插入gameInfo [0]中,当我引用gameInfo [2]希望获得该范围内第三个单元格的值时,将返回“未定义”。
有没有一种方法可以使用getValues()来用单独的元素填充数组?如果是这样,这是怎么做的?如果没有,什么是更好的选择?
感谢大家提供的任何帮助!
答案 0 :(得分:1)
getValues
返回2d数组,即使它是单行单元格也是如此。像这样:gameInfo[row - 1][column - 1]
,所以左上角是gameInfo[0][0]
。
您所有的数据都位于gameInfo
的一行(gameInfo[0]
)中,因此第三个元素将以gameInfo[0][2]
的形式访问(第1行,第3列)。
gameInfo[2]
将是第三行,确实超出了范围undefined
。
另外:要将值仅从2d数组获取到数组中,您可以执行以下操作:
const values = [];
gameInfo.forEach(row => {
row.forEach(column => {
values.push(column);
})
})
答案 1 :(得分:0)
有关一些有用的代码来检索数据,请参见Simple Mail Merge Tutorial底部的脚本。复制此注释中的所有代码:
//////////////////////////////////////////////////////////////////////////////////////////
//
// The code below is reused from the 'Reading Spreadsheet data using JavaScript Objects'
// tutorial.
//
/////////
/////////////////////////////////////////////////////////////////////////////////
// getRowsData iterates row by row in the input range and returns an array of objects.
一旦有了,请使用getRowsData检索数据作为对象数组。如果我对您的理解正确,那么您会想得到你。
Karl S