Google Scripts: заполнение многомерного массива значениями ячеек - PullRequest
0 голосов
/ 02 ноября 2018

Я изучаю основы сценариев Google после использования VBA в Excel в течение многих лет, поэтому, пожалуйста, простите за основной вопрос.

Я хочу взять диапазон ячеек на моем листе, используя getValues ​​(), а затем создать многоэлементный массив.

Вот простой пример из моего кода:

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

Как видите, определенный диапазон составляет 9 ячеек в одной строке.

Моя цель - создать массив из этих 9 ячеек, чтобы каждая ячейка была доступна через отдельный элемент массива. Однако, похоже, что все 9 значений ячеек вставляются в gameInfo [0], и когда я ссылаюсь на gameInfo [2] в надежде получить значение третьей ячейки в диапазоне, возвращается «undefined».

Есть ли способ использовать getValues ​​() для заполнения массива отдельными элементами? Если да, то как это сделать? Если нет, то что является лучшей альтернативой?

Спасибо за любую помощь, которую вы все можете предоставить!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

См. Скрипт в нижней части Простое учебное пособие по слиянию , где приведен полезный код для извлечения данных. Скопируйте весь код из этого комментария вниз:

//////////////////////////////////////////////////////////////////////////////////////////
//
// 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, чтобы получить данные в виде массива объектов. Если я вас правильно понимаю, вы получите то, чего хотите.

Карл С

0 голосов
/ 02 ноября 2018

getValues возвращает двумерный массив, даже если это один ряд ячеек. Думайте об этом так: gameInfo[row - 1][column - 1], так что верхний левый - gameInfo[0][0].

Все ваши данные в gameInfo находятся в одной строке (gameInfo[0]), поэтому третий элемент будет доступен как gameInfo[0][2] (строка 1, столбец 3).

gameInfo[2] будет третьей строкой, которая действительно находится за пределами диапазона, и undefined.

Также: чтобы получить только значения в массив из двухмерного массива, вы можете сделать это:

const values = [];
gameInfo.forEach(row => {
  row.forEach(column => {
    values.push(column);
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...