Невозможно использовать "setValues" в Google Sheets после разделения строки на массив - PullRequest
1 голос
/ 16 февраля 2020

Я не уверен, почему установка значений в один go не работает после того, как я разбил текст на массив. Сообщение об ошибке немного странное:

"Невозможно преобразовать массив в число [] []"

Хотя все работает нормально, если I l oop через вместо этого используйте массив setValue (без «s»), поэтому я не могу понять, в чем дело.

Буду признателен за вашу помощь. Заранее спасибо.

function Replace() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Sheet1");

  var text ="Might-be-a-system-bug-of-course.";
  var list = text.split("-");

  var listLen = list.length;

  Logger.log(list.length);
  Logger.log(list);

  // This does not work:
  sh.getRange(1, 1, listLen, 1).setValues(list); 

  // This works:
  //for (var i = 0; i < listLen; i++) {
  //  sh.getRange(i + 1, 1).setValue(list[i]);
  //}

}

1 Ответ

1 голос
/ 16 февраля 2020

setValues требуется двумерный массив:

function Replace() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Sheet1");

  var text ="It's-almost-never-a-system-bug";
  var list = text.split("-");

  var listLen = list.length;

  Logger.log(list.length);
  Logger.log(list);

  // This work:
  sh.getRange(1, 1, listLen, 1).setValues(list.map(e => [e])); 
  sh.getRange(10, 1, 1,listLen).setValues([list]);

  // This works:
  //for (var i = 0; i < listLen; i++) {
  //  sh.getRange(i + 1, 1).setValue(list[i]);
  //}

}
...