SpreadsheetApp: getRange и setValues - PullRequest
       2

SpreadsheetApp: getRange и setValues

1 голос
/ 16 октября 2019

Я хотел бы использовать Google SpreadsheetApp для записи 2D-массива в лист. Попытка

sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);

приводит к следующей ошибке:

"The number of rows in the data does not match the number of rows in the range. The data has 4 but the range has 3."

Как можно получить такую ​​ошибку из этой строки кода? Я использую размеры массива, чтобы указать диапазон в электронной таблице, поэтому как может быть, чтобы они не совпадали?

(Строка является частью https://github.com/alpatania/sassafras (функция appendData_в supporting_code).)

Ответы [ 2 ]

1 голос
/ 17 октября 2019

При вызове

sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);

Вы просто проверяете длину первого ряда вашего 2D-массива (используя array2d[0].length). Однако разные строки также могут иметь разную длину. Ниже вы можете увидеть короткий фрагмент кода, который воспроизводит вашу проблему:

Issue reproduction

Чтобы продолжить устранение неполадки, вы можете найти следующие релевантные гиперссылки:

0 голосов
/ 17 октября 2019
function insert2DArrayIntoSheet() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var array=[[1,2,3],[4,5,6],[7,8,9]];
  var rg=sh.getRange(1,1,array.length,array[0].length);
  rg.setValues(array);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...