Google脚本:使用单元格值填充多维数组

时间:2018-11-02 17:24:20

标签: arrays google-apps-script google-sheets

在Excel中使用VBA多年后,我正在学习Google脚本的基础知识,因此请原谅这个基本问题。

我想使用getValues()获取工作表中的一系列单元格,然后创建一个多元素数组。

这是我代码中的一个简单示例:

  var gameInfo = [];
  gameInfo = gameMasterSheet.getRange(3, 3, 1, 9).getValues();

如您所见,定义的范围是一行中有9个单元格。

我的目标是从这9个单元格创建一个数组,并通过单独的数组元素访问每个单元格。但是,似乎所有9个单元格值都已插入gameInfo [0]中,当我引用gameInfo [2]希望获得该范围内第三个单元格的值时,将返回“未定义”。

有没有一种方法可以使用getValues()来用单独的元素填充数组?如果是这样,这是怎么做的?如果没有,什么是更好的选择?

感谢大家提供的任何帮助!

2 个答案:

答案 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